No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Insertando varios documentos

12/30
Recursos

Aportes 7

Preguntas 4

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

Con esta instrucción, le decimos a Mongo que si hay un problema de duplicidad, solo deje estos documentos fuera y que continue con la inserción de datos.

, {
    ordered: false
}
use("platzi_store")

db.products.drop() // drop() borra todos los documentos de toda una coleccion !cuidado :v!

db.products.insertMany([  //si hay una colision de _id  si inserta pero hasta la colision
    {
        _id: 1,
        name: "Raqueta",
        price: 1000
    },
    {
        _id: 2,
        name: "pelota",
        price: 20
    }
],{
    ordered: false //si hay una colision de _id  si inserta pero no inserta los colisionados
}
) 

db.products.find()

Si hay una falla al insertar un conjunto de documentos, al encontrar una falla en el diccionario, a partir de ahi se dejan de crear documentos.

Para comentar dentro del archivo .mongodb se usa //

Inserción de documentos y duplicidad

podemos insertar varios documentos en una colección con insertMany([{...},{...}])

db.collection.insertMany([
    {
      ...
    },
    {
      ...
    },
    {
      ...
    },
    {
      ...
    },
])

siguiendo el ejercicio, podemos insertar varios productos a la colección de productos
src/crud/insertMany.mongodb:

use("try")
db.products.drop()

db.products.insertMany([
  {
    _id: 1,
    name: "Product 1",
    price: 100
  },
  {
    _id: 2,
    name: "Product 2",
    price: 200
  },
  {
    _id: 3,
    name: "Product 3",
    price: 300
  },
])

db.products.find()

con esta instrucción insertaríamos 3 documentos a la colección, sin embargo, hay que tener en cuenta que si hay problemas de duplicidad como en el siguiente caso, donde el documento numero 3 tiene el mismo identificador que el documento numero 1

db.products.insertMany([
  {
    _id: 1,
    name: "Product 1",
    price: 100
  },
  {
    _id: 2,
    name: "Product 2",
    price: 200
  },
  {
    _id: 1,
    name: "Product 1",
    price: 100
  },
   {
    _id: 3,
    name: "Product 3",
    price: 300
  },
])

Mongo solo insertara los documentos hasta el punto donde encuentre el error, insertando solo los 2 primeros documentos, para evitar este comportamiento por defecto, debemos pasarle un segundo argumento { ordered: false } a la instrucción insertMany([{...},{...}, { ordered: false }])

db.products.insertMany([
  {
    _id: 1,
    name: "Product 1",
    price: 100
  },
  {
    _id: 2,
    name: "Product 2",
    price: 200
  },
  {
    _id: 1,
    name: "Product 1",
    price: 100
  },
   {
    _id: 3,
    name: "Product 3",
    price: 300
  },
],{
  ordered: false
})

de esta forma, Mongo insertara todos los documentos que le mandamos y solo dejara por fuera los que tengan problemas de duplicidad.

use("platzi_store");

db.products.drop(); // Delete all documents

db.products.insertMany(
  [
    {
      _id: 1,
      name: "Laptop",
      price: 1099,
    },
    {
      _id: 2,
      name: "Mouse",
      price: 508,
    },
    {
      _id: 3,
      name: "Keyboard",
      price: 746,
    },
    {
      _id: 2,
      name: "Monitor",
      price: 1299,
    },
    {
      _id: 5,
      name: "Headphones",
      price: 129,
    },
  ],
  {
    ordered: false, // If has problems, how to _ids duplicate, continue with after items
  }
);

db.products.find();

Por lo que veo, podemos usar insertMany para insertar varios documentos pero también podemos usar solo la instrucción insert con la misma sintaxis.