查找用户列表并在Node / Mongoose中进行迭代

时间:2019-01-02 11:51:50

标签: javascript node.js mongoose

在我的代码下面,我得到了一个基于部门的用户列表。比使用该列表,我使用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个用户。 请让我知道如何解决此问题。谢谢

1 个答案:

答案 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