MongoDB Matriz de objetos usando insert() con ejemplo

โšก Resumen inteligente

MongoDB El ejemplo "Array of Objects using insert()" muestra cรณmo agregar varios documentos a una colecciรณn en una sola operaciรณn. Almacena un array de registros de empleados, inserta arrays dentro de un documento y muestra los resultados de forma clara mediante la funciรณn de impresiรณn JSON.

  • ๐Ÿ“ฅ Insertar a granel: El mรฉtodo insert() agrega una matriz de documentos a una colecciรณn en una sola operaciรณn eficiente.
  • ๐Ÿงพ Modelo de documento: Cada documento es un conjunto de pares campo-valor, y MongoDB agrega automรกticamente un _id รบnico.
  • ๐Ÿ—‚๏ธ Matrices integradas: Una matriz tambiรฉn puede existir como un campo dentro de un documento, keeping valores relacionados juntos.
  • ๐Ÿ” Mรฉtodos modernos: insertOne() e insertMany() son las alternativas actuales y mรกs claras al mรฉtodo insert() anterior.
  • ๐Ÿ–จ๏ธ Readable Salida: El comando forEach(printjson) imprime cada documento en un formato JSON limpio y fรกcil de leer.

ยฟQuรฉ es el mรฉtodo insert() en MongoDB?

El mรฉtodo insert() en MongoDB Agrega uno o mรกs documentos a una colecciรณn. Un documento es un conjunto de pares campo-valor almacenados en BSON, una forma binaria de JSON. Cuando se pasa un solo documento, `insert()` almacena ese รบnico registro; cuando se pasa una matriz de documentos, los almacena todos en una sola operaciรณn, lo cual es mรกs rรกpido que insertarlos uno por uno.

El mรฉtodo se ejecuta sobre una colecciรณn especรญfica utilizando el patrรณn db.collection.insert(). Si la colecciรณn de destino aรบn no existe, MongoDB Se crea automรกticamente durante la primera inserciรณn. Cada documento tambiรฉn recibe un campo _id รบnico si no se proporciona uno, de modo que cada registro pueda identificarse posteriormente.

Aunque insert() todavรญa funciona, mรกs reciente MongoDB Las versiones ofrecen las funciones insertOne() e insertMany() como alternativas mรกs claras. Los ejemplos que se muestran a continuaciรณn utilizan insert() para agregar una matriz de documentos de empleados y luego muestran los resultados en un formato JSON legible.

Agregar una matriz de documentos

El comando "insertar" tambiรฉn se puede utilizar para insertar varios documentos en una colecciรณn a la vez. El siguiente ejemplo de cรณdigo se puede utilizar para insertar varios documentos a la vez.

El siguiente ejemplo muestra cรณmo se puede hacer esto:

Paso 1) Crรฉar un JavaScript variable llamada myEmployee para contener la matriz de documentos

Paso 2) Agregue los documentos requeridos con el nombre del campo y los valores a la variable

Paso 3) Utilice el comando insertar para insertar la matriz de documentos en la colecciรณn

var myEmployee=
	[
		{
			"Employeeid" : 1,
			"EmployeeName" : "Smith"
		},
		{
			"Employeeid"   : 2,
			"EmployeeName" : "Mohan"
		},
		{
			"Employeeid"   : 3,
			"EmployeeName" : "Joe"
		},
	];

	db.Employee.insert(myEmployee);

Si el comando se ejecuta correctamente, se mostrarรก la siguiente salida

MongoDB Matriz de objetos usando insert()

El resultado muestra que esos 3 documentos se agregaron a la colecciรณn.

Cรณmo insertar una matriz dentro de un documento

Ademรกs de insertar una serie de documentos separados, MongoDB Te permite almacenar una matriz como un campo dentro de un solo documento. Esto es รบtil cuando un registro contiene naturalmente una lista de valores, como un empleado que tiene varias habilidades o un estudiante matriculado en varios cursos. Porque MongoDB Utiliza un modelo de documento flexible; la matriz reside directamente dentro del objeto en lugar de en una tabla separada, lo que mantiene juntos los datos relacionados.

El siguiente ejemplo inserta un documento de empleado que contiene un campo de tipo matriz llamado Habilidades:

db.Employee.insert(
   {
      "Employeeid" : 4,
      "EmployeeName" : "Alan",
      "Skills" : [ "MongoDB", "Node.js", "Express" ]
   }
);

Las partes de este documento funcionan de la siguiente manera:

  • ID de empleado y Nombre de empleado son pares ordinarios de campo y valor.
  • Habilidades Es un campo de matriz que contiene tres valores de cadena entre corchetes.
  • El documento completo, incluyendo la matriz incrustada, se almacena en una รบnica operaciรณn de inserciรณn.

Despuรฉs de agregar el registro, puede confirmar la matriz incrustada con una consulta de bรบsqueda que imprima el resultado en JSON:

db.Employee.find( { "Employeeid" : 4 } ).forEach(printjson)

El resultado muestra la matriz de Habilidades anidada dentro del documento del empleado. LaterPuedes aรฑadir nuevos valores al array con el operador $push o leer un รบnico elemento por su รญndice. Almacenar los valores conectados de esta forma mantiene cada documento independiente, reduce la necesidad de realizar uniones entre colecciones y facilita la lectura y el mantenimiento de los datos.

insert() vs insertOne() vs insertMany()

MongoDB Ofrece tres mรฉtodos relacionados para aรฑadir datos. La siguiente tabla los compara para que puedas elegir el mรกs adecuado:

Mรฉtodo Propรณsito Ejemplo
insertar() Mรฉtodo heredado que agrega un solo documento o una matriz de documentos. Aรบn funciona, pero estรก obsoleto en los controladores mรกs recientes. db.Empleado.insertar(miEmpleado)
insertarUno() Agrega exactamente un documento y devuelve su _id insertado. Preferible para registros individuales. db.Employee.insertOne({ โ€ฆ })
insertarMuchos() Agrega una matriz de documentos en una sola llamada y devuelve todos los _ids insertados. Preferible para inserciones masivas. db.Employee.insertMany([ { โ€ฆ }, { โ€ฆ } ])

Para proyectos nuevos, utilice `insertOne()` e `insertMany()`, ya que ofrecen una intenciรณn mรกs clara y una mejor notificaciรณn de errores. El mรฉtodo `insert()` se mantiene disponible principalmente para garantizar la compatibilidad con versiones anteriores de tutoriales y scripts.

Impresiรณn en formato JSON

JSON es un formato llamado JavaNotaciรณn de objetos de script, y es solo una forma de almacenar informaciรณn de una manera organizada y fรกcil de leer. En nuestros ejemplos posteriores, utilizaremos la funciรณn de impresiรณn JSON para ver el resultado en un mejor formato.

Veamos un ejemplo de impresiรณn en formato JSON.

db.Employee.find().forEach(printjson)

Code Explicaciรณn:

  1. El primer cambio consiste en aรฑadir la funciรณn `forEach()` a la funciรณn `find()`. Esto garantiza que se recorra explรญcitamente cada documento de la colecciรณn. De esta forma, se tiene mayor control sobre las acciones que se pueden realizar con cada uno de los documentos.
  2. El segundo cambio es colocar el comando printjson en la declaraciรณn forEach. Esto harรก que cada documento de la colecciรณn se muestre en formato JSON.

Si el comando se ejecuta correctamente, se mostrarรก la siguiente salida

Salida:

Impresiรณn en formato JSON

El resultado muestra claramente que todos los documentos estรกn impresos en estilo JSON.

Preguntas Frecuentes

Sรญ. Pasar un array de documentos a la funciรณn `insert()` los aรฑade todos en una sola operaciรณn. Esta inserciรณn masiva es mรกs rรกpida que llamar a `insert()` por separado para cada documento, aunque actualmente se prefiere el mรฉtodo `insertMany()`.

Sรญ. Si un documento no incluye un campo _id, MongoDB Genera automรกticamente un ObjectId รบnico durante la inserciรณn, de modo que cada registro almacenado pueda identificarse y recuperarse posteriormente.

Por defecto, MongoDB Realiza una inserciรณn ordenada. Agrega los documentos en el orden especificado y se detiene ante el primer error, dejando los documentos restantes sin insertar. Si se establece `ordered` en `false`, la inserciรณn continรบa incluso despuรฉs de que se produzcan errores.

Sรญ. Las herramientas de IA pueden convertir una descripciรณn en lenguaje natural de tus datos en instrucciones insertOne() o insertMany(), incluyendo matrices incrustadas. Revisa siempre los campos y tipos de datos generados antes de ejecutarlos en una base de datos.

La IA puede sugerir si se deben incrustar matrices dentro de un documento o hacer referencia a colecciones separadas, segรบn los patrones de consulta. Esto ayuda a los principiantes a modelar datos de manera eficiente, evitando duplicaciones innecesarias o anidamientos demasiado profundos.

Resumir este post con: