【发布时间】:2018-06-11 13:04:19
【问题描述】:
是否有任何快速有效的方法来迭代 MongoDB 集合并删除每个连续 id 的文档?
我的收藏文件格式如下:
{
"_id" : "USD/JPY-2011-04-13T09:34:04.365Z",
"pair" : "USD/JPY",
"dateTime" : ISODate("2011-04-13T09:34:04.365+0000"),
"bid" : 83.98,
"ask" : 83.992,
"bidVolume" : 1.309999942779541,
"askVolume" : 1.5
}
目前,我发现根据日期时间删除文档的唯一解决方法是:
var bulk = db.collection.initializeUnorderedBulkOp();
bulk.find( { "dateTime":{ $lte : ISODate("2012-01-01T00:00:00.000Z") } } ).remove();
bulk.execute();
但它真的很慢,删除大约。每秒 10,000 个文档(我的集合包含 50 亿个文档)。
【问题讨论】:
-
真的不清楚你在问什么。您列出的代码不仅不是“每两个连续删除”,而且在这种形式下也没有必要,因为所有 MongoDB CRUD API 方法都使用下面的“批量”接口。所以
db.collection.deleteMany({ "datetime": { "$lte" : new Date("2012-01-01") } })是完全一样的。但仍然与问题的文本或标题无关。 -
感谢您及时回复尼尔。也许你是对的,我发布的只是从 MongoDB 集合中删除文档的传统方式,但我暗示的(..或最初想说的)是关于如何将此语句转换为“每两个删除”的建议/提示连续”的文件。你有什么建议吗?
标签: mongodb performance mongodb-query