我很难让Model.bulkWrite
获得我的文件。我没有在文档中发现任何暗示这是不可能的(尽管,也许我错过了它)。下面是我正在使用的代码示例:
var opts = [];
for (var item of data){
opts.push({
updateOne: {
filter: {"id": item.id},
update: {"$setOnInsert": {
"id": item.id,
"name": item.name}
}
}
})
};
Item.bulkWrite(
opts,
{upsert: true},
function(err, result){
if(err) throw err;
console.log(result);
// do more stuff here
}
);
我通过循环运行多个更新/ upsert没有任何问题,但是当我这样做时,我在操作完成时无法访问回调,因此这对我不起作用。我还测试了上面的代码,将updateOne
部分替换为insertOne
部分,并且没有任何问题。
有没有人有任何想法发生了什么?在这里upsert不是一个有效的选项?
答案 0 :(得分:2)
@Alex Blex,你是对的钱。我想这只是我的疏忽。对于那些感兴趣的人,这意味着从第二部分代码中删除upsert
并将第一部分更改为:
var opts = [];
for (var item of data){
opts.push({
updateOne: {
filter: {"id": item.id},
update: {"$setOnInsert": {
"id": item.id,
"name": item.name}
},
upsert: true
}
})
};