使用 Mongoose ,如何在不替换现有项目的情况下向对象添加更多项目?
User.findOneAndUpdate(
{ userId: 0 },
{ userObjects: { newItem: value } }
);
上面的代码的问题是,它清除了之前的所有内容,并在我希望将其添加到userObjects时(如对javascript数组的推函数)将其替换为newItem。
最佳答案
使用点表示法指定字段以更新/添加嵌入式文档中的特定字段。
User.findOneAndUpdate(
{ userId: 0 },
{ "userObjects.newerItem": newervalue } }
);
或者User.findOneAndUpdate(
{ userId: 0 },
{ "$set":{"userObjects.newerItem": newervalue } }
);
或使用$ mergeObjects聚合运算符通过传递新对象来更新现有obj
User.findOneAndUpdate(
{"userId":0},
[{"$set":{
"userObjects":{
"$mergeObjects":[
"$userObjects",
{"newerItem":"newervalue","newestItem":"newestvalue"}
]
}
}}]
)