我想知道如何使用mongoose合并对象。
例如说我的文件是:
{
a: {
x: 2,
y: 3
}
}
我有一个对象:
{
x: 3,
z: 5
}
我想将它们合并,以便我现在拥有:
{
a: {
x: 3,
y: 3,
z: 5
}
}
答案 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();