是否有任何快速有效的方法来迭代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亿份文件)。
答案 0 :(得分:0)
我终于找到了一种快速简便的方法:
var cnt = 0;
var docsToDelete = [];
db.collection_name
.find( { "dateTime":{ $lte : ISODate(threshold_timestamp) } } )
.forEach( function(myDoc)
{
if (cnt % 2 == 0){
docsToDelete.push(myDoc._id);
}
cnt++;
}
);
db.dc_historic_ticks.remove({'_id':{'$in': docsToDelete}});