查询MongoDB最有效的方法是什么?

时间:2015-08-26 16:02:04

标签: java mongodb

我有一个包含超过400万个文档的MongoDB集合。我试着通过以下方式接收文件。

db.getCollection(collectionName).find(new Document("lang", lang))
        .skip(skip).limit(limit).sort(new Document("date", 1));

花了443秒。

db.getCollection(collectionName).find(new Document("lang", lang))
         .sort(new Document("date", 1)).skip(skip).limit(limit);

花了529秒。

两个查询都提供了完全相同的结果。

这是由于网络速度的变化吗?这里的调用堆栈是什么?我希望结果根据方法调用的顺序不同。

1 个答案:

答案 0 :(得分:0)

两个查询都返回相同的结果。第一个将限制结果改进网络IO然后进行排序,而第二个将排序所有然后限制结果。

使用索引来提高查询性能。如果查询搜索多个字段,请创建复合索引。扫描索引要比扫描集合快得多。