首页 > 解决方案 > 使用 Javascript 对象更新文档中的所有字段

问题描述

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

标签: javascriptnode.jsmongodbmonk

解决方案


如果您相信 newData 不会有任何您不想要的密钥(例如更新运算符),这应该可以工作:

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

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

文档update


推荐阅读