Estoy luchando por fusionar dos objetos de la forma en que los necesito usando Node.js express y mongoDB. A continuación verás ambos objetos iniciales.
Obj1: { "name":"max", "age":26, "hometown": "NY" } Obj2: { "id": "123", "favoriteteams" : ["Yankees, "Knicks"], "home" : "NY" }Actualmente estoy intentando:
const merged = {...obj1, ...obj2.favoriteteams};pero eso me da
merged: { 0: "Yankees" 1: "Knicks" "name":"max", "age":26, "hometown": "NY" }Pero lo que necesito es:
merged: { "name":"max", "age":26, "hometown": "NY" "favoriteteams": ["Yankees", "Knicks"]; } También probé const merged = {...obj1, ...obj2}; y usando Object.assign() pero obviamente ambos se combinan en los campos que no necesito de obj2 (ID y hogar). Efectivamente, solo necesito obtener los equipos favoritos del segundo objeto, pero necesito que sea una nueva clave en el primer objeto y también para mantener la respuesta de la matriz con la lista de cadenas.
Gracias por cualquier ayuda.
Puede aprovechar $mergeObjects en la agregación de MongoDB.
db.collection.aggregate([ // keep only the fields you want in obj2 { "$project": { favoriteteams: 1 } }, { "$addFields": { obj2: "$$ROOT", obj1: <put your obj1 here> } }, { "$project": { // perform merge merged: { "$mergeObjects": [ "$obj1", "$obj2" ] } } }, { "$replaceRoot": { // revert back to original form "newRoot": "$merged" } } ])Aquí está el parque infantil de Mongo para su referencia.