Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
Mongoose, ¿cómo agregar automáticamente _id a los objetos en la matriz dentro del elemento de la colección?

tengo una colección mongo que se ve así:

 { name: string _id: (auto set) items: array[ name: string url: string items: array[ { name: string, url: string, items: [] } ] ] }

Estoy usando findByIdAndUpdate (con mangosta) para agregar un elemento a la matriz de elementos:

 Menu.findByIdAndUpdate( req.body.parentid, { $push: { items: { name: req.body.item.name, url: req.body.item.url, items: [] } } }, { safe: true, upsert: true, new: true }, function(err, model) { if (err !== null) { console.log(err); } } );

Esto funciona bien, pero no agrega un _id a cada objeto insertado en la matriz de items . Y realmente necesito una identificación para cada uno.

Supongo que proviene del método utilizado, findByIdAndUpdate , ya que parece más una actualización que una inserción. Si mi pensamiento es correcto.

Usando mongodb 3.2.10 y mongoose 4.7.6.

Cualquier ayuda sería realmente apreciada. Gracias.

EDITAR: el _id: (auto set) no es real, se agrega automáticamente a través de mongo. Pero solo en los objetos de nivel superior.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Encontré la solución en este hilo: mongoDB: Creando un ObjectId para cada nuevo niño agregado al campo de matriz

básicamente, agregó

var ObjectID = require('mongodb').ObjectID;

y luego forzando la creación:

 $push: { items: { _id: new ObjectID(), name: req.body.item.name, url: req.body.item.url, items: [] } }
over 4 years ago · Santiago Trujillo Denunciar

0

No necesita especificar _id: (configuración automática) en el esquema de mongoose, agregará automáticamente _id único con cada documento.

over 4 years ago · Santiago Trujillo Denunciar

0

si no define _id en Schema, mongoose agrega automáticamente un _id al elemento de matriz. por ejemplo:

 const countrySchema = new Schema({ name: { type: String }, cities: [ { // don't define _id here. name: String } ], });

ahora, cuando inserta una fila, el resultado es algo como esto:

{nombre: 'Irán', ciudades: [{_id: 6202902b45f0d858ac141537, nombre: 'Tabriz'}]}

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda