有没有办法用mongoDB优化计数

时间:2018-04-23 21:26:13

标签: mongodb mongodb-query mongodb-indexes

我在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")});

0 个答案:

没有答案