我在id_profile
上有一个索引,而我db.myCollection.count({"id_profile":xxx})
。如果计数很低,它会非常快,但如果计数很大,它就开始变慢。例如,如果有1 000 000条记录与{"id_profile":xxx}
匹配,则最多可能需要 500 ms 才能返回计数。我认为在内部引擎只是加载匹配{"id_profile":xxx}
的所有文档来计算它们。
有没有办法快速检索过滤器与索引完全匹配的计数?我想避免使用计数器集合:(
注意:我在使用mongoDB 3.6.3,这是我使用的脚本:
db.createCollection("following");
db.following.createIndex( {"id_profile": 1}, {unique: false} );
function randInt(n) { return parseInt(Math.random()*n); }
for(var j=0; j<10; j++) {
print("Building op "+j);
var bulkop=db.following.initializeOrderedBulkOp() ;
for (var i = 0; i < 1000000; ++i) {
bulkop.insert(
{
id_profile: NumberLong("-4578128619402503089"),
id_following: NumberLong(randInt(9223372036854775807))
}
)
};
print("Executing op "+j);
bulkop.execute();
}
db.following.count({"id_profile":NumberLong("-4578128619402503089")});