我正在删除从一个param
数组中找到的文档(在本例中称为 slug ):
const selected = ['abc_1', 'aaa_2', ...]
MyModel.remove({'slug': { $in: selected }}, (err, data) => {
if (err || data === null){
next(err)
}
res.json(data)
});
希望保留已删除 Objects
,例如在doc
回调中使用findOneAndRemove()
param所发生的情况,即:
如果
new: false
应用更新前的文档,或new = true
更新后的文档。
这个解决方案有效,但我发现脏了,有点冗长(因为,我认为,执行两次类似的查询):
const selected = ['abc_1', 'aaa_2', ...]
MyModel.find({'slug': { $in: selected }})
.then(orig => {
MyModel.remove({'slug': { $in: selected }}, (err, data) => {
if (err || data === null){
next(err);
}
console.log('Array of Objects deleted recently:', orig);
res.json(data)
});
})
由于remove()
回调似乎返回result
对象,其中包含result.n
(数量)等信息,但原始文档Object
不存在处理这种情况的更好/正确方法?
答案 0 :(得分:0)
一种可能的改进可能是使用id来删除文档。它应该更快。
const selected = ['abc_1', 'aaa_2', ...]
MyModel.find({'slug': { $in: selected }})
.then(orig => {
const ids = orig.map(o => o._id);
MyModel.remove({'_id': { $in: ids }}, (err, data) => {
if (err || data === null){
next(err);
}
console.log('Array of Objects deleted recently:', orig);
res.json(data)
});
})