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

178
Vistas
Actualice el último elemento de una matriz anidada en mongodb

He intentado la siguiente consulta de mongoose que no parece funcionar:

 Model.findOneAndUpdate( { name: origin }, { $set: { 'field1.$[id1].field2.-1': "value" } }, { arrayFilters: [ { 'id1.userId': "customerId" } ], new: true } );

Nota: field1 y field2 son matrices

MongoDB no acepta los índices negativos, lo que está causando problemas.

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

0

Puede considerar usar el operador $set (agregación) y usar el operador double $map :

 db.collection.aggregate([ { $match: { name: "myname" } } { $set: { field1: { $map: { input: "$field1", in: { $cond: { if: { $ne: [ "$$this.userId", "customerId" ] }, then: "$$this", else: { $mergeObjects: [ "$$this", { field2: { $concatArrays: [ { $slice: [ "$$this.field2", { $add: [ { $size: "$$this.field2" }, -1 ] } ] }, ["value"] ] } } ] } } } } } } } ])

Parque infantil Mongo

over 4 years ago · Santiago Trujillo Denunciar

0

Aplique el operador $set junto con el operador posicional $ en su actualización para cambiar el campo de nombre.

El operador posicional $ identificará el elemento correcto en la matriz para actualizar sin especificar explícitamente la posición del elemento en la matriz, por lo que su declaración de actualización final debería verse así:

 db.collection.update( { "friends.u.username": "michael" }, { "$set": { "friends.$.u.name": "hello" } } )

Respuesta tomada de - https://stackoverflow.com/a/34431571

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