在我的代码下面,我得到了一个基于部门的用户列表。比使用该列表,我使用for循环来检查该用户位置是否在Loc表中。
user.find({dept: 'main'}, {}, (err, users)=>{
for(var i=0; i<users.length; i++){
var query={userid: users[i].userid};
Loc.findOneAndUpdate({query, {$set: {locuser: user[i].locuser}}, {new: true, upsert: false}, (err, results)=>{
if(err) { console.log(err)
console.log("success")
})
}
})
当我运行此代码时,它将重复插入最后一个ID。这意味着如果找到4个用户,它将为列表中最后一位的同一用户插入4个位置,同时应输入所有4个用户。 请让我知道如何解决此问题。谢谢
答案 0 :(得分:0)
您可以使用mongodb bulk更新执行更新操作
var bulk = Loc.collection.initializeUnorderedBulkOp();
user.find({dept: 'main'}, {}, (err, users)=>{
users.forEach( function (userObj){
bulk.find({userid: userObj.userid}).update(update);
})
})
bulk.execute(callback)
有关更多信息,click here