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

Para añadir varios documentos de una sola vez a una colección utilizaremos 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.

Si vas a hacer una carga masiva de datos desde fichero y no tienes que hacer ninguna modificación a los datos del fichero usa la herramienta mongoimport.

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

Se utiliza para indicar a MongoDB un nivel de confirmación respecto a si el dato ha sido guardado correctamente. Normalmente, solo lo usaremos en instalaciones con sharding o conjuntos de réplicas. Puedes ver más información sobre ello aquí.

ordered

Este parámetro puede tomar los valores 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:

Antes de la versión 3.0 el método de inserción insert() era la forma principal para añadir documentos. A partir de esa versión se introdujo una nueva API CRUD con una semántica más clara. Aunque por razones de compatibilidad hacia atrás se mantenga durante un tiempo el soporte al método 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.