Mongo在搜索一个值时进行索引,在另一个值上进行排序

时间:2014-12-24 23:00:09

标签: mongodb indexing

我已经开始在Mongo中掌握正确的索引,但有一件事我有点困惑。

如果我想搜索一个字段(级别)并对另一个字段(随机)进行排序,我该如何设置该索引?哪个领域首先出现?

注意:上面,随机,我的意思是我有一个名为random的字段。我没有在随机选择的字段上进行排序。

1 个答案:

答案 0 :(得分:1)

排序"随机"在mongodb的领域并不是一个好主意。如果sort没有编入索引,那么排序将在内存中完成,这对于大型结果集来说是一个问题。

索引可以支持对索引键模式的非前缀子集进行排序操作。为此,查询必须在排序键之前的所有前缀键上包含相等条件。因此,如果您的索引是{a:1,b:1},您可以像这样查询

  

db.data.find({a:" foo"})。sort({b:1})

Mongobd文档解释得很好:http://docs.mongodb.org/manual/tutorial/sort-results-with-indexes/

编辑:根据更新的问题,您的索引应为{level:1,random:1}