Mongoose:向现有对象添加更多项目

omi*_*idh 5 javascript mongoose mongodb node.js

使用 Mongoose,如何向对象添加更多项目而不替换现有项目?

 User.findOneAndUpdate(
  { userId: 0 },
  { userObjects: { newItem: value } }
 );
Run Code Online (Sandbox Code Playgroud)

上面代码的问题是,当我想要它只是将另一个项目添加到 userObjects 时(例如 JavaScript 数组的推送功能),它会清除之前的所有内容并用 newItem 替换它。

use*_*814 6

使用点表示法指定要更新/添加嵌入文档中的特定字段的字段。

User.findOneAndUpdate(
  { userId: 0 },
  { "userObjects.newerItem": newervalue } }
);
Run Code Online (Sandbox Code Playgroud)

或者

User.findOneAndUpdate(
  { userId: 0 },
  { "$set":{"userObjects.newerItem": newervalue } }
);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

或使用 $mergeObjects 聚合运算符通过传递新对象来更新现有 obj

User.findOneAndUpdate(
  {"userId":0},
  [{"$set":{
    "userObjects":{
      "$mergeObjects":[
        "$userObjects",
        {"newerItem":"newervalue","newestItem":"newestvalue"}
      ]
    }
  }}]
)
Run Code Online (Sandbox Code Playgroud)