gpt4 book ai didi

mongodb - 在查找期间从集合中删除文档

转载 作者:可可西里 更新时间:2023-11-01 09:24:14 29 4
gpt4 key购买 nike

如何在迭代期间删除文档(使用游标)?

db.users.find().forEach(function(myDoc) {
print( "user: " + myDoc.name );
// now I'm done with it
myDoc.remove(); // <-- this doesn't work
} );

有没有办法不用单独搜索就可以做到这一点?

db.users.find().forEach(function(myDoc) {
print( "user: " + myDoc.name );
// now I'm done with it
db.users.findOneAndDelete(myDoc); // <-- this does work
} );

虽然后者确实有效,但似乎在已经拥有文档后进行搜索会显着减慢该过程。 (我错了吗?)

最佳答案

您可以先搜索对象并将 _id 保存在一个数组中。然后使用以下代码一次删除所有元素。

db.users.deleteMany(
{ "_id": {$in:idArray} },
function(err, results) {

}
);

编辑

我找到了一种批量处理的方法。

var bulk = db.users.initializeUnorderedBulkOp();
bulk.find( { "_id": {$in:idArray} }).remove();
bulk.execute();

根据我的经验,如果您使用批量操作,您可以将执行时间缩短 10 倍以上,因为它减少了 IO 操作。

关于mongodb - 在查找期间从集合中删除文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36776648/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com