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

问题描述 投票:0回答:2

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

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

或者我可以使用updatemany https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/将它们作为数组发送

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

谢谢你的时间。

node.js mongodb
2个回答
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
});

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


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

© www.soinside.com 2019 - 2024. All rights reserved.