Node.js Mongoose一次删除多个数据

Node.js Mongoose一次删除多个数据,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个很大的id列表,我想从多个模型的mongodb中删除这些id,其主要思想是我在多个模式中的文档具有相同的id,我想从每个模型中删除一个文档。我是这样做的: _.each(wrongList, function(item) { UPUSTP.find({id: item.id}).remove(function(err) { if (err) console.log("Error while deleting " +

我有一个很大的id列表,我想从多个模型的mongodb中删除这些id,其主要思想是我在多个模式中的文档具有相同的id,我想从每个模型中删除一个文档。我是这样做的:

_.each(wrongList, function(item) {
        UPUSTP.find({id: item.id}).remove(function(err) {
            if (err)
                console.log("Error while deleting " + err.message);
        })

        UPUANAM.find({id: item.id}).remove(function(err) {
            if (err)
                console.log("Error while deleting " + err.message);
        })

        UPUEXE.find({id: item.id}).remove(function(err) {
            if (err)
                console.log("Error while deleting " + err.message);
        })

        UPUEXO.find({id: item.id}).remove(function(err) {
            if (err)
                console.log("Error while deleting " + err.message);
        })

        UPUPROC.find({id: item.id}).remove(function(err) {
            if (err)
                console.log("Error while deleting " + err.message);
        })
    })

问题是,我在
错误列表中有14000多个ID,查询可以正常工作,但需要花费很多时间来完成。。。如何增加移除时间?我可以批量删除吗?

我想您可以使用mongodb的$in操作符

比如:

UTUSTP.remove({_id: {$in: wronglist}}, function(){...}); // and so on

假设您使用的是
低破折号
,则可以使用
功能获取
ID的集合。让我们称之为
idsArray
。 现在,您可以在通话中使用
$in
操作员,直接从您的模型中使用
删除
,如:

async.parallel({
  function (callback) {
    UPUSTP.remove({ id: { $in: idsArray } }, function (err) {
      if (err) return callback("Error while deleting " + err.message);
      callback(null, "Some useful message here...");
    });
  },
  . // do the same with the other collections
  .
  .
  function (err, result) {
    // check the error and do somethin useful with the results
  }
首先,
中的
$将把db调用减少到每个集合一个。然后,
async.parallel
将并行运行任务,最后,
remove
直接从模型中删除每个集合的
find
操作