使用 Javascript 对象更新文档中的所有字段

Updating all fields in an document using a Javascript object

我想更新 MongoDB 文档中的所有字段,并且我有一个包含所有这些字段的 Javascript 对象。我可以轻松地输入要更新的每个字段,但这似乎需要大量的手动工作,而且不可重复使用。我想做类似下面的事情,但这会创建一个对象,其中包含名为 newData 的文档中的所有新字段数据。

我已尝试 JSON.stringify 变量,但格式不适合更新。

var newData = {
   _id:ObjectId("53245234..."),
   id: 88888,
   firstData: "someData",
   secondData: 787855,
   thirdData: [ 45,17,12,234]
};
var collection = db.get('CollectionToUpdate');

//strip out dB id so as not to overwrite it, possibly not needed
if ("_id" in newData) {
  delete newData["_id"];
}

//find the correct document based on program generated id and update
collection.update({id: newData.id}, {
   newData
})

如果您相信 newData 不会有任何您不想要的密钥(如更新操作符),这应该有效:

var collection = db.get('CollectionToUpdate');
collection.update({id: newData.id}, newData)

请注意,这将替换文档。我假设这就是您所说的 "update all the fields" 的意思。 update 不替换“_id”。

Documentation for update