如何在Mongoose中合并两个对象

时间:2018-05-11 16:05:53

标签: mongodb mongoose

我想知道如何使用mongoose合并对象。

例如说我的文件是:

{
    a: {
        x: 2,
        y: 3
    }
}

我有一个对象:

{
    x: 3,
    z: 5
}

我想将它们合并,以便我现在拥有:

{
    a: {
        x: 3,
        y: 3,
        z: 5
    }
}

3 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

Object.assign(doc1.a, doc2.toObject())
doc1.save()

但是您可能希望在合并之前使用delete doc2._id

答案 1 :(得分:0)

您可以使用Object.assign

  

Object.assign()方法用于复制所有值   从一个或多个源对象到目标的可枚举的自身属性   宾语。它将返回目标对象。

示例:

const object1 = {
  a: 1,
  b: 2,
  c: 3
};

const object2 = Object.assign({c: 4, d: 5}, object1);
console.log(object2.c, object2.d);

或者,您也可以使用Spread syntax

const object1 = {
  a: 1,
  b: 2,
  c: 3
};

const object2 = {c: 4, d: 5, ...object1}
console.log(object2.c, object2.d);

答案 2 :(得分:0)

关于Object.assign()的其他答案对我不起作用,但是您可以使用spread运算符,如下所示:

 const user = await User.findById(12345); // your Mongoose model
 const existingProperties = user.properties.toObject(); // existing properties from the user
 const providedProperties = { a: 1 }; // new properties to be inserted/overwritten

 // merge the two objects, this will overwrite properties in existingProperties if
 // they are provided in the providedProperties object, otherwise they will be attached
 const mergedProperties = { ...existingProperties, ...providedProperties };

 user.set({ properties: mergedProperties });
 const updatedUser = await user.save();