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

时间:2019-01-07 00:27:33

标签: javascript node.js mongodb monk

我想更新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
})

1 个答案:

答案 0 :(得分:1)

如果您相信newData不会包含您不想要的任何键(例如更新运算符),则应该可以:

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

请注意,这将替换文档。我认为这就是“更新所有字段”的意思。 update不会替换“ _id”。

Documentation for update