sql >> Base de Datos >  >> NoSQL >> MongoDB

Insertar MongoDB()

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.