我正在使用以下代码一次删除多个文档:
db.collection('testcollection').deleteMany({
id: {
$in: ['1', '2', '3']
}
}, function (error, response) {
// ...
});
Run Code Online (Sandbox Code Playgroud)
有没有办法一次删除并返回所有已删除的文件?
注意:我正在寻找多个删除和多个返回,这与这个问题不同:如何在MongoDB中删除文档?
不幸的是,deleteMany()只将错误和deleteWriteOpResult传递给您的回调,因此不传递实际文档.
这不仅仅是Node.js - 这是db.collection.deleteMany在Mongo中实际工作的方式:
返回:包含以下内容的文档
如果操作以写入关注运行,则布尔值确认为true;如果禁用写入关注,则返回false
deletedCount包含已删除文档的数量
你必须用两个请求来做,但你可以在一个函数中抽象它 - 例如,如果你使用本机Mongo驱动程序,你可以写这样的东西:
function getAndDelete(collectionName, filter, callback) {
var collection = db.collection(collectionName);
collection.find(filter, function (err, data) {
if (err) {
callback(err);
} else {
collection.deleteMany(filter, function (err, r) {
if (err) {
callback(err);
} else {
callback(null, data);
}
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
你可以打电话给:
getAndDelete('testcollection', {
id: {
$in: ['1', '2', '3']
}
}, function (error, response) {
// ...
});
Run Code Online (Sandbox Code Playgroud)
此代码未经过测试,只是为了让您了解从哪里开始.
注意:曾经有过,findAndRemove()但它已被弃用.
| 归档时间: |
|
| 查看次数: |
4468 次 |
| 最近记录: |