Node.js Mongoose一次删除多个数据
我有一个很大的id列表,我想从多个模型的mongodb中删除这些id,其主要思想是我在多个模式中的文档具有相同的id,我想从每个模型中删除一个文档。我是这样做的: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 " +
_.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
操作