Soy nuevo en MongoDB. Tengo un objeto debajo
{ "_id" : "ABCDEFGH1234", "level" : 0.6, "pumps" : [ { "pumpNo" : 1 }, { "pumpNo" : 2 } ] }Y solo quiero mover el campo de nivel a los objetos de la matriz de bombas como este
{ "_id" : "ABCDEFGH1234", "pumps" : [ { "pumpNo" : 1, "level" : 0.6 }, { "pumpNo" : 2, "level" : 0.6 } ] }Revisé el documento de MongoDB en la sección Agregación, pero no encontré nada. En SQL por JOIN o SUB Query puedo hacerlo, pero aquí es No-SQL
¿Podrías ayudarme con esto por favor? Gracias
Pruébate esto para ver el tamaño:
db.foo.aggregate([ // Run the existing pumps array through $map and for each // item (the "in" clause), create a doc with the existing // pumpNo and bring in the level field from doc. All "peer" // fields to 'pumps' are addressable as $field. // By $projecting to a same-named field (pumps), we effectively // overwrite the old pumps array with the new. {$project: {pumps: {$map: { input: "$pumps", as: "z", in: {pumpNo:"$$z.pumpNo", level:"$level"} }} }} ]); Le recomendamos encarecidamente que explore el poder de $map , $reduce , $concatArrays , $slice y otras funciones de matriz que hacen que el lenguaje de consulta de MongoDB sea diferente del enfoque más escalar de SQL.