findOneandUpdate在map函数内部仅运行一次

时间:2019-07-18 03:48:16

标签: javascript mongodb

async.series中,其中事物同步运行,我有一个函数可以从MongoDB中获取数据并将其存储在数组let arr = []中,在第二个函数中,我遍历该数组并尝试更新使用findOneAndUpdate收集另一个集合的值,但它只运行一个值并停止。

我尝试了其他方法来解决此问题,但没有成功,而且这些馆藏中有大量数据接近1M。

let arr = [];
async.series([
  function(callback){
    return db.collection('a').find({date: {$gte: new Date(...)})
              .toArray((err,data) => {
              arr = data;
              callback();  

   }))
  },

// the main problem is here
  function (callback){
    arr.map(item => {
      db.collection('b').findOneAndUpdate({date: item.date},
        {$set: {name: item.name}}

  });
   callback();
  }
])

因此,如果在第一次迭代中有匹配项,它将对其进行更新,但不会为其他下一个值进行迭代。

欢迎您解决此问题的替代方法。

0 个答案:

没有答案