如何在Mongodb / Node中的一个命令中保存多个文档

时间:2018-03-22 07:54:10

标签: node.js mongodb

我原本以为这很简单,但我认为这可能会产生意想不到的结果。我基本上将一些文档加载到变量中..然后我想将整个文档保存回MongoDB。

我是否必须使用保存单独保存每个 https://docs.mongodb.com/manual/reference/method/db.collection.save/

或者我可以使用updatemany https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/

将它们作为数组发送

在文档中似乎并不清楚如何做到这一点......如果可以的话。

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

如果你使用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
});

如果你想更新具有多个价值的多个,那是不可能的(或经过多次研究后我没有找到一个好的解决方案),你必须提出多个请求。

答案 1 :(得分:0)

要使用相同的值更新多个文档,您可以这样查询:

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