Tengo la siguiente matriz de datos:
{ _id: 5f5726ef7d475a61a95c5e0c, attributes: [ { values: [ { name: '1' } ], }, { values: [ { name: '2' } ] } ], attr1: [ { name: "Study Code" }, { name: "Patient Study" } ] }Lo que necesito es agregar el valor correspondiente a cada uno de los objetos attr1 según el índice. Entonces el resultado sería:
{ _id: 5f5726ef7d475a61a95c5e0c, attributes: [ { values: [ { name: '1' } ], }, { values: [ { name: '2' } ] }, ], attr1: [ { name: "Study Code", values: [{ name: "1" }] }, { name: "Patient Study", values: [{ name: "2" }] } ], } Me pregunto si eso es posible usando la agregación $addFields en MongoDB
Puedes usar $zip
db.collection.aggregate([ { "$project": { attributes: { "$zip": { "inputs": [ "$attributes", "$attr1" ] } } } } ])Aquí está el parque infantil de Mongo para su referencia.
Consulta
[[member1_1 member2_1], ....] aggregate( [{"$set": {"attr1": {"$zip": {"inputs": ["$attributes", "$attr1"]}}}}, {"$set": {"attr1": {"$map": {"input": "$attr1", "in": {"$mergeObjects": [{"$arrayElemAt": ["$$this", 1]}, {"$arrayElemAt": ["$$this", 0]}]}}}}}])