En MongoDB el db.collection.insert()
El método inserta un documento o documentos en una colección.
La collection
parte es el nombre de la colección en la que insertar el/los documento/s.
Ejemplo
Aquí hay un ejemplo del uso de db.collection.insert()
para insertar múltiples documentos en una colección llamada pets
:
db.pets.insert([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Resultado:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
El db.collection.insert()
El método devuelve un objeto que contiene el estado de la operación de inserción.
El objeto devuelto depende de si se insertó un solo documento o varios documentos.
- Cuando se inserta un solo documento, devuelve un
WriteResult
objeto. - Cuando se inserta una matriz de documentos, devuelve un
BulkWriteResult
objeto.
Podemos ver que el ejemplo anterior devolvió un BulkWriteResult
objeto. Esto se debe a que agregamos una serie de documentos. Habría hecho esto incluso si la matriz contuviera solo un elemento.
Ahora si usamos db.collection.find()
al mirar la colección, veremos los documentos recién agregados.
db.pets.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
En este caso, nuestros tres documentos son los únicos en la colección, por lo que solo estos documentos fueron devueltos.
Sin embargo, si la colección fuera grande, podríamos usar los ID de documentos para reducir el resultado a solo los documentos que nos interesan.
db.pets.find({_id: {$in: [1,2,3]}})
Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
¿Qué sucede si la colección no existe?
Si la colección no existe, se crea y se le agregan los documentos.
Si la colección ya existe, los documentos simplemente se agregan a ella (siempre que su _id
valores no entran en conflicto con ninguno existente).
Cuando creé este ejemplo, la colección no existía, por lo que la operación de inserción la creó.
El _id
Campo
El _id
field es un campo de identificador único en MongoDB.
Como se demostró en el ejemplo anterior, puede proporcionar su propio _id
campo en el documento. Si lo hace, entonces su valor debe ser único dentro de la colección. Esto se debe a que su _id
se usará como el identificador único del documento.
Este es un ejemplo de cómo insertar un documento sin proporcionar el _id
campos.
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
Resultado:
WriteResult({ "nInserted" : 1 })
Tenga en cuenta que en este caso el método devuelve un WriteResult
objeto en lugar de un BulkWriteResult
objeto. Esto se debe a que insertamos un solo documento (y no estaba en una matriz).
Ahora echemos un vistazo a la colección de nuevo.
db.pets.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }
Podemos ver que nuestro nuevo documento está incluido en la colección y tiene un _id
campo con un valor generado automáticamente.
El ordered
Parámetro
El db.collection.insert()
El método también acepta un ordered
parámetro. Este es un parámetro booleano con un valor predeterminado de true
.
El ordered
El parámetro especifica si la operación de inserción debe ser ordenada o desordenada.
Si ordered
se establece en false
, los documentos se insertan en un formato desordenado y pueden ser reordenados por mongod
para aumentar el rendimiento.
Con las inserciones ordenadas, si ocurre un error durante la inserción de uno de los documentos, MongoDB regresa por error sin procesar los documentos restantes en la matriz.
Con inserciones desordenadas, si ocurre un error durante la inserción de uno de los documentos, MongoDB continúa insertando los documentos restantes en la matriz.
Más información
El db.collection.insert()
El método también acepta un writeConcern
argumento, que describe el nivel de reconocimiento solicitado de MongoDB para operaciones de escritura.
Consulte la documentación de MongoDB para db.collection.insert()
para más información.