如何在使用Node.js Mongoose搜索结果后删除文档?
上述方法不起作用。 我想删除100项或更多的搜索结果,我应该怎么做 使用此查询如何在使用Node.js Mongoose搜索结果后删除文档?,node.js,mongodb,express,mongoose,database,Node.js,Mongodb,Express,Mongoose,Database,上述方法不起作用。 我想删除100项或更多的搜索结果,我应该怎么做 使用此查询 AAAModel.find({'category' : category}) .skip(100) .sort({date: 'desc'}) .exec(function(err, result) { if (err) { next(err); } if (
AAAModel.find({'category' : category})
.skip(100)
.sort({date: 'desc'})
.exec(function(err, result) {
if (err) {
next(err);
}
if (result) {
result.remove();
}
});
使用此查询
AAAModel.find({'category' : category})
.skip(100)
.sort({date: 'desc'})
.exec(function(err, result) {
if (err) {
next(err);
}
if (result) {
result.remove();
}
});
使用此查询
AAAModel.find({'category' : category})
.skip(100)
.sort({date: 'desc'})
.exec(function(err, result) {
if (err) {
next(err);
}
if (result) {
result.remove();
}
});
使用此查询
AAAModel.find({'category' : category})
.skip(100)
.sort({date: 'desc'})
.exec(function(err, result) {
if (err) {
next(err);
}
if (result) {
result.remove();
}
});
我们知道,参数
results
是find
回调中的文档数组,而不是单个文档。所以您可以迭代它并逐个删除项,尽管这不是为了提高性能而删除文档的最佳方法
实际上,mongoose可以用来删除文档,但是查询条件直到现在才可以跳过和排序。我们知道,参数
results
是find
回调中的文档数组,而不是单个文档。所以您可以迭代它并逐个删除项,尽管这不是为了提高性能而删除文档的最佳方法
实际上,mongoose可以用来删除文档,但是查询条件直到现在才可以跳过和排序。我们知道,参数
results
是find
回调中的文档数组,而不是单个文档。所以您可以迭代它并逐个删除项,尽管这不是为了提高性能而删除文档的最佳方法
实际上,mongoose可以用来删除文档,但是查询条件直到现在才可以跳过和排序。我们知道,参数
results
是find
回调中的文档数组,而不是单个文档。所以您可以迭代它并逐个删除项,尽管这不是为了提高性能而删除文档的最佳方法
实际上,mongoose可以用来删除文档,但是查询条件直到现在都不能跳过和排序。我也遇到了同样的问题。
事实上,在最新的mongoose查询中有remove方法。因此,它可以这样工作:
AAAModel.find(
{'category' : category},
{ skip: 100,sort:{date: -1}},
function(err, results) {
if (err) {
next(err);
}
if (result) {
result.remove();
}
});
但在我的例子中,此代码删除了所有记录
因此,可能的解决办法是
AAAModel.find({'category' : category})
.skip(100)
.sort({date: -1})
.remove(function(err, result) {
if (err) {
next(err);
}
if (result) {
console.log("Number of deleted records:" + result);
}
});
不过可能会很贵。我也有同样的问题。
事实上,在最新的mongoose查询中有remove方法。因此,它可以这样工作:
AAAModel.find(
{'category' : category},
{ skip: 100,sort:{date: -1}},
function(err, results) {
if (err) {
next(err);
}
if (result) {
result.remove();
}
});
但在我的例子中,此代码删除了所有记录
因此,可能的解决办法是
AAAModel.find({'category' : category})
.skip(100)
.sort({date: -1})
.remove(function(err, result) {
if (err) {
next(err);
}
if (result) {
console.log("Number of deleted records:" + result);
}
});
不过可能会很贵。我也有同样的问题。
事实上,在最新的mongoose查询中有remove方法。因此,它可以这样工作:
AAAModel.find(
{'category' : category},
{ skip: 100,sort:{date: -1}},
function(err, results) {
if (err) {
next(err);
}
if (result) {
result.remove();
}
});
但在我的例子中,此代码删除了所有记录
因此,可能的解决办法是
AAAModel.find({'category' : category})
.skip(100)
.sort({date: -1})
.remove(function(err, result) {
if (err) {
next(err);
}
if (result) {
console.log("Number of deleted records:" + result);
}
});
不过可能会很贵。我也有同样的问题。
事实上,在最新的mongoose查询中有remove方法。因此,它可以这样工作:
AAAModel.find(
{'category' : category},
{ skip: 100,sort:{date: -1}},
function(err, results) {
if (err) {
next(err);
}
if (result) {
result.remove();
}
});
但在我的例子中,此代码删除了所有记录
因此,可能的解决办法是
AAAModel.find({'category' : category})
.skip(100)
.sort({date: -1})
.remove(function(err, result) {
if (err) {
next(err);
}
if (result) {
console.log("Number of deleted records:" + result);
}
});
但是可能会非常昂贵。您可以尝试以下方法之一:
AAAModel.find({'category' : category})
.select("_id")
.skip(100)
.sort({date: -1})
.exec(function(err, idObjLst) {
if (err) {
return next(err);
}
var ids = idObjLst.map(function(idObj) { return idObj._id; });
if (ids && ids.length > 0) {
AAAModel.remove({_id: {$in: ids}}).exec(function(err, result) {
console.log("Removed " + result + " elements");
});
});
或
或
您可以尝试以下方法之一:
AAAModel.find({'category' : category})
.select("_id")
.skip(100)
.sort({date: -1})
.exec(function(err, idObjLst) {
if (err) {
return next(err);
}
var ids = idObjLst.map(function(idObj) { return idObj._id; });
if (ids && ids.length > 0) {
AAAModel.remove({_id: {$in: ids}}).exec(function(err, result) {
console.log("Removed " + result + " elements");
});
});
或
或
您可以尝试以下方法之一:
AAAModel.find({'category' : category})
.select("_id")
.skip(100)
.sort({date: -1})
.exec(function(err, idObjLst) {
if (err) {
return next(err);
}
var ids = idObjLst.map(function(idObj) { return idObj._id; });
if (ids && ids.length > 0) {
AAAModel.remove({_id: {$in: ids}}).exec(function(err, result) {
console.log("Removed " + result + " elements");
});
});
或
或
您可以尝试以下方法之一:
AAAModel.find({'category' : category})
.select("_id")
.skip(100)
.sort({date: -1})
.exec(function(err, idObjLst) {
if (err) {
return next(err);
}
var ids = idObjLst.map(function(idObj) { return idObj._id; });
if (ids && ids.length > 0) {
AAAModel.remove({_id: {$in: ids}}).exec(function(err, result) {
console.log("Removed " + result + " elements");
});
});
或
或
您是否使用mongoose访问数据?是的。我选择mongoose。您是否使用mongoose访问数据?是的。我选择mongoose。您是否使用mongoose访问数据?是的。我选择mongoose。您是否使用mongoose访问数据?是的。我选择猫鼬。如何使用移除方法?我想在执行查询后删除结果。
结果
没有删除,而是使用results.forEach(r=>r.remove())
如何使用删除方法?我想在执行查询后删除结果。结果
没有删除,而是使用results.forEach(r=>r.remove())
如何使用删除方法?我想在执行查询后删除结果。结果
没有删除,而是使用results.forEach(r=>r.remove())
如何使用删除方法?我想在执行查询后删除结果。results
上没有remove,而是使用results.forEach(r=>r.remove())
好主意,但是ids
将是一个看起来像{id:ObjectId}的文档数组
所以我认为您还需要使用ids.map
将ids
重塑为一个objectid数组,然后再将其与$in
一起使用。JohnnyHK:您当然是对的,但是,这段代码也可以工作(可能是因为mongoose内部的特定迭代过程)。我已经用猫鼬3.8.22进行了测试。有趣的是,它在3.8.23中对我不起作用——没有任何东西被删除。@johnyhk。真奇怪。我已将mongoose更新到3.8.24。我的项目中有一个工作示例。尽管如此,即使有效,也是错误的:)根据@JohnnyHK的评论,答案已经更新。好主意,但是ids
将是一个看起来像{u id:ObjectId}的文档数组
所以我认为您还需要使用ids.map
将ids
重塑为一个objectid数组,然后再将其与$in
一起使用。JohnnyHK:您当然是对的,但是,这段代码也可以工作(可能是因为mongoose内部的特定迭代过程)。我已经用猫鼬3.8.22进行了测试。有趣的是,它在3.8.23中对我不起作用——没有任何东西被删除。@johnyhk。真奇怪。我已将mongoose更新到3.8.24。我的项目中有一个工作示例。尽管如此,即使有效,也是错误的:)根据@JohnnyHK的评论,答案已经更新。好主意,但是ids
将是一个看起来像{u id:ObjectId}的文档数组
所以我认为您还需要使用ids.map
将ids
重塑为一个objectid数组,然后再将其与$in
一起使用。JohnnyHK:您当然是对的,但是,这段代码也可以工作(可能是因为mongoose内部的特定迭代过程)。我已经用猫鼬3.8.22进行了测试。有趣的是,它在3.8.23中对我不起作用——没有任何东西被删除。@johnyhk。真奇怪。我有最新消息