我是MongoDB的新手。我写了一个JS查询,我在mongo shell中运行。极慢的mongoDB查询
基本上,我有两张桌子。两者都有近16万条记录。
我在遍历第一个表和每个记录,转到第二个表来查找是否存在相应的记录。
pbp = db.poss_pbp.find().batchSize(1000)
while(pbp.hasNext()){
pbp_temp = pbp.next();
id = (pbp_temp["poss_idx"]);
opt_temp = db.poss_opt.find({"poss_idx": id}).count()
if(opt_temp == 0)
{
//Do something
}
}
查询运行速度非常慢(每1000条记录约4-5分钟)。我能做些什么来使其工作更快?密钥“poss_idx”在数据库中有一个索引。
您可能正在造成(等同于)扫描。如果你只关心存在,你可能想要检查http://stackoverflow.com/questions/8389811/how-to-query-mongodb-to-test-if-an-item-exists。他们似乎认为'计数'是一个相当缓慢的操作。 – Mitch
如果它只有“160,000条记录”,那么您可能需要立即撤回所有的poss_idx'标识符(只需获取这些标识符),然后在内存中进行本地比较。 – WiredPrairie