Menú de navegación

Knowledge center Programación Entornos de Programación

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, de 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 
}
Comando insertOne

Inserción múltiple

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

  • 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.
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 retrocompatibilidadSe entiende por retrocompatibilidad o compatibilidad hacia atrás (backward compatibility) a la capacidad de una aplicación para permitir la ejecución o uso de versiones anteriores desde la versión actual. se mantiene el soporte al método insert(), desde MongoDB nos desaconsejan su uso y es probable que desaparezca en el futuro.
Comando insertMany
 

Esta píldora formativa está extraída del Curso online de Introducción a MongoDB.

¿Te gusta el contenido de esta píldora de conocimiento?

No pierdas tu oportunidad y ¡continúa aprendiendo!

ADR Formación

ADR Formación utiliza cookies propias y de terceros para fines analíticos anónimos, guardar las preferencias que selecciones y para el funcionamiento general de la página.

Puedes aceptar todas las cookies pulsando el botón "Aceptar" o configurarlas o rechazar su uso pulsando el botón "Configurar".

Puedes obtener más información y volver a configurar tus preferencias en cualquier momento en la Política de cookies