小编Vla*_*aev的帖子

Mongodb按字符串数组排序并使用索引

如何通过一个字符串数组进行排序查询,该字符串将"stage" : "SORT"在其计划中执行?

我正在使用mongo 3.6
"mycoll"集合包含大约500,000个这样的文档:

{
    someobject:{
        arrayfield:["asd","qwe"]
    }
}

{
    someobject:{
        arrayfield:["zxc"]
    }
}
Run Code Online (Sandbox Code Playgroud)

这个查询

db.mycoll.find().sort({ "someobject.arrayfield": 1 }).skip(125340).limit(20)
Run Code Online (Sandbox Code Playgroud)

产生错误

排序操作使用的RAM超过最大33554432字节

我有"someobject.arrayfield"的索引,但是explain()给了我:

 "winningPlan" : {
            "stage" : "SKIP",
            "skipAmount" : 125340,
            "inputStage" : {
                    "stage" : "SORT",
                    "sortPattern" : {
                            "someobject.arrayfield" : 1
                    },
                    "limitAmount" : 125360,
                    "inputStage" : {
                            "stage" : "SORT_KEY_GENERATOR",
                            "inputStage" : {
                                    "stage" : "FETCH",
                                    "inputStage" : {
                                            "stage" : "IXSCAN",
                                            "keyPattern" : {
                                                    "someobject.arrayfield" : 1
                                            },
                                            "indexName" : "arrayfield_indexname",

                                            "isMultiKey" …
Run Code Online (Sandbox Code Playgroud)

mongodb

10
推荐指数
1
解决办法
532
查看次数

标签 统计

mongodb ×1