使用 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”。
我想更新 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”。