Aquí están mis datos:
{ foos: [ { _id: 1 }, { _id: 2 }, { _id: 3 } ], bar: "baz" } Ahora quiero mover la bar de campo al objeto foos con _id = 2 para tener esto:
{ foos: [ { _id: 1 }, { _id: 2, bar: "baz" }, { _id: 3 }, ] }¿Cómo puedo hacer esto usando el marco de agregación?
$map para iterar el ciclo de foos y verificar _id: 2 condiciones, si coincide, devolver el objeto de la bar y fusionarlo con el objeto actual $mergeObjects db.collection.aggregate([ { $project: { foos: { $map: { input: "$foos", in: { $cond: [ { $eq: ["$$this._id", 2] }, { $mergeObjects: ["$$this", { bar: "$bar" }] }, "$$this" ] } } } } } ])