我有以下情况:
要保存的文档:
[
{
character: "Elf",
mana: 222
},
{
character: "Human",
mana: 100
},
{
character: "Dwarf",
mana: 0
}
]
我的 mongodb 中有以下内容:
[
{
character: "Elf",
mana: 150
},
{
character: "Human",
mana: 50
},
{
character: "Dwarf",
mana: 50
}
]
进行更新的最佳方式是什么,以便 Angular 色获得正确的法力值?
我不能假设值超过某个值,并且可能我还有另外 50 个不同字符的对象。
如果我在数据库中找不到该字符,我想插入新字符,否则只需更新它。
我一直在查看文档,但看起来 updateMany
不是我想要的,而且 update
一项一项看起来很昂贵。
我怎样才能正确地做到这一点?
最佳答案
mongodb update
可以进行多次更新,但不能接受数组更新。所以你必须一一去。如果您想进行所有并行操作,请使用async.each
,如下所示。
async.each(docs, function(doc, next){
db.collection('characters').update({character:doc.character},{$set:{mana:doc.mana}, $setOnInsert:{character:doc.character}},{upsert:true}, function(err, res){
next(null, null);
})
}, function(err, res){
// all data have been updated.
})
关于javascript - 如何从文档列表更新 MongoDB 中的多个文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44023891/