我有以下情况:
要保存的文件:
[
{
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
}
]
如何进行更新以使角色获得适当的法术值?
我不能假设值超过某个值,可能还有另外50个不同字符的对象。
如果我在数据库中找不到该字符,我想插入新字符,否则只需更新它。
我一直在查看文档,但看起来updateMany
并不是我想要的,update
一个接一个看起来很贵。
我该如何正确地做到这一点?
答案 0 :(得分:2)
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.
})