使用$ in查询包含数组的字段时的排序索引

时间:2013-12-20 13:36:44

标签: mongodb mongodb-query mongodb-indexes

我正在使用$in运算符查询数组,我也在尝试对结果进行排序,但我不断收到此错误:

  

没有索引的sort()数据太多。添加索引或指定   较小的限制

我知道排序限制为32兆字节,或者您必须使用索引。问题是我在字段上有一个复合索引,我正在查询和我正在排序的字段。

收藏品:

{
    "a" : [ 1, 5, 7, 10 ],
    ... // other fields are not relevant for querying
}

查询如下所示:

db.mycol.find({ a: { $in : [ 1, 10, 19, 100, 2000 ] }}).sort({b : 1});

$in查询包含约。要匹配的2000个ID。

索引是

{
    "v" : 1,
    "key" : {
        "a" : 1,
        "b" : 1
    },
    "ns" : "db.mycol",
    "name" : "a_1_b_1",
    "background" : true
},

如果我在没有explain()的情况下进行查询时使用sort(),我可以看到MongoDB正在使用该索引来执行查询,但显然不能使用相同的索引来执行排序。我还尝试使用skiplimit,但如果我使用的skip太大,我会得到相同的错误,可能是因为索引不用于排序。

如果我只在字段b上创建索引,MongoDB会很乐意为我排序数据。但我真正想要的是对索引数组字段执行搜索并对数据进行排序。

我查看了文档,但找不到任何有用的信息。我是否在MongoDB中遇到过错误或者我做错了什么?

0 个答案:

没有答案