Cómo insertar documentos en MongoDB
Existen fundamentalmente dos métodos para insertar documentos:
insertOne()
: para insertar los documentos de uno en uno.insertMany()
: para insertar varios documentos en un mismo comando.
Inserción simple
Para insertar un documento de forma individual el método que debemos usar es insertOne()
. El siguiente ejemplo crea en la colección albumes perteneciente a la base de datos musica, un documento con el álbum "Revolver" de los Beatles:
> db.albumes.insertOne({
"nombre" : "Revolver",
"autor" : "The Beatles",
"año" : 1966
})
No hemos incluido el campo _id
, pero MongoDB lo añadirá por nosotros. Podemos verlo al buscar el documento con findOne()
:
> db.albumes.findOne()
{
"_id" : ObjectId("5f856f714f02f31ac68acf3e"),
"nombre" : "Revolver",
"autor" : "The Beatles",
"año" : 1966
}
Inserción múltiple
insertMany()
.Para inserciones múltiples esta es la forma más eficiente ya que se envía la información de una única vez. Este método recibe como argumento un array de documentos. El siguiente ejemplo introduce otros tres álbumes de los Beatles con este método:
insertMany()
> db.albumes.insertMany([
{
"nombre" : "Abbey Road",
"autor" : "The Beatles",
"año" : 1969
},
{
"nombre" : "Let It Be",
"autor" : "The Beatles",
"año" : 1970
},
{
"nombre" : "Help!",
"autor" : "The Beatles",
"año" : 1965
}
])
salida
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5f8580104f02f31ac68acf3f"),
ObjectId("5f8580104f02f31ac68acf40"),
ObjectId("5f8580104f02f31ac68acf41")
]
}
find()
> db.albumes.find()
{ "_id" : ObjectId("5f85824b4f02f31ac68acf43"), "nombre" : "Revolver", "autor" : "The Beatles", "año" : 1966 }
{ "_id" : ObjectId("5f85824e4f02f31ac68acf44"), "nombre" : "Abbey Road", "autor" : "The Beatles", "año" : 1969 }
{ "_id" : ObjectId("5f85824e4f02f31ac68acf45"), "nombre" : "Let It Be", "autor" : "The Beatles", "año" : 1970 }
{ "_id" : ObjectId("5f85824e4f02f31ac68acf46"), "nombre" : "Help!", "autor" : "The Beatles", "año" : 1965 }
Desde la versión 3.6 existe un límite de 100.000 documentos por actualización masiva. No obstante, la mayoría de los drivers pueden lidiar con este límite y hacerlo transparente al usuario evitando dicha limitación.
Pero si tienes que modificar algún dato del fichero de carga es mejor hacerlo entonces con un programa a medida.
El método insertMany()
tiene un segundo parámetro opcional que consiste en un documento con opciones de como realizar la actualización. Este documento-parámetro puede tener dos claves, las dos opcionales:
writeConcern
ordered
true
(valor por defecto) o false
. Le indica a MongoDB si es necesario insertar los documentos en el mismo orden en el que se envían o puede modificarse dicho orden. Si lo ponemos atrue
, entonces en caso de que ocurra algún fallo en la actualización de un documento se abortará la carga. Si lo ponemos a false
se omitirá el error y la carga continuará sin problemas.Validaciones en la inserción
MongoDB realiza las siguientes validaciones básicas a la hora de insertar un documento en una colección:
- La estructura del documento, que debe tener un formato JSON válido.
- La presencia del campo
_id
. Si no se especifica MongoDB lo añadirá por nosotros. - El tamaño de un documento en formato BSON no debe ser superior a 16 MB.
insert()
, desde MongoDB desaconsejan su uso y es muy probable que desaparezca.Fantástico, ya sabes como insertar documentos en MongoDB, de uno en uno, o por lotes. En la siguiente página aprenderás a modificarlos.