我想更新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
})
答案 0 :(得分:1)
如果您相信newData不会包含您不想要的任何键(例如更新运算符),则应该可以:
var collection = db.get('CollectionToUpdate');
collection.update({id: newData.id}, newData)
请注意,这将替换文档。我认为这就是“更新所有字段”的意思。 update
不会替换“ _id”。