我本以为这很简单,但我认为这可能会产生意想不到的结果。我基本上将一些文档加载到变量中..然后我想将整个文档保存回MongoDB。
我是否必须使用save https://docs.mongodb.com/manual/reference/method/db.collection.save/单独保存每个
或者我可以使用updatemany https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/将它们作为数组发送
在文档中似乎并不清楚如何做到这一点......如果可以的话。
谢谢你的时间。
如果你使用Native MongoDB驱动程序用于NodeJs,你可以使用insertMany如果你想创建新文档,我认为如果你有一个对象数组(小心你的名字字段),它会工作,如:
var your_variable = [{a: 1, b: 2, c: 3}, {a: 2, b: 3, c: 1, d: 4}];
db.YourCollection.insertMany(your_variable, function(err, result) {
// Your treatement
});
如果你想更新具有多个值的多个,这是不可能的(或者经过多次研究后我没有找到一个好的解决方案),你必须提出多个请求。
要使用相同的值更新多个文档,可以像这样查询:
db.YourCollection({/* filter empty to update all document */}, {
$set: {
field1: new_value1,
field2: new_value2
// etc...
}
}, function(err, result) {
// your treatment
});
如果要更新多个文档但不是全部,请使用如下方法:
db.YourCollection({fieldToFilter: value}, {
$set: {
field1: new_value1,
field2: new_value2,
// etc...
}
}, function(err) {
// Your treatment
});
$set
阶段用于更改字段的值,但您可以使用以下任何运算符:https://docs.mongodb.com/manual/reference/operator/update/
你不是被迫使用回调函数,你也可以使用Promise