使用 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 } }
);
javascript -  Mongoose :向现有对象添加更多项-LMLPHP
或使用$ mergeObjects聚合运算符通过传递新对象来更新现有obj
User.findOneAndUpdate(
  {"userId":0},
  [{"$set":{
    "userObjects":{
      "$mergeObjects":[
        "$userObjects",
        {"newerItem":"newervalue","newestItem":"newestvalue"}
      ]
    }
  }}]
)

09-19 15:25