Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 说明显示快速执行时间,但运行查询永远不会返回_Mongodb_Mongodb Query_Explain - Fatal编程技术网

Mongodb 说明显示快速执行时间,但运行查询永远不会返回

Mongodb 说明显示快速执行时间,但运行查询永远不会返回,mongodb,mongodb-query,explain,Mongodb,Mongodb Query,Explain,我有一个问题似乎永远不会回来。 当我对该查询运行explain时,它会显示27毫秒的executionStats.executionTimeMillis,并且初始输入阶段是IXSCAN,应该只返回4个对象。 我已经确认,查询输入阶段查询只返回4个结果 这是我的疑问: {"$or":[ {"field1.key":{"$in":["name1","name2",/^prefix.*suffix$/]},"field2.key":"foobar"}, {"field1.key":{"

我有一个问题似乎永远不会回来。 当我对该查询运行
explain
时,它会显示27毫秒的
executionStats.executionTimeMillis
,并且初始输入阶段是
IXSCAN
,应该只返回4个对象。 我已经确认,查询输入阶段查询只返回4个结果

这是我的疑问:

{"$or":[
    {"field1.key":{"$in":["name1","name2",/^prefix.*suffix$/]},"field2.key":"foobar"},
    {"field1.key":{"$in":["name1","name2",/^prefix.*suffix$/]},"field3.key":"foobar"}
]}
这是
解释({verbose:“executionStats”})
输出(很抱歉粘贴太长):

更新

看起来,尽管
explain
提到了它,但它对
$或
的第一部分使用了
“field2.key”
,对
$或
的第二部分使用了
“field3.key”
,当查看
db.currentOp()时,inprog
显示:
“计划摘要”:“IXSCAN{field1.key:1.0},IXSCAN{field3.key:1.0}”
因此,它为
$或
部分之一选择了错误的索引,从而使查询扫描了大量文档

  • 你知道为什么
    explain
    能够正确地获取索引,但查询本身却不能
  • 使用
    $或
    时,我们如何
    提示
    mongo使用正确的索引
    您在
    db.currentOp().inprog
    中看到查询了吗?
    planSummary
    字段在相关op对象中包含什么内容?@Meni谢谢!这有助于我更好地理解这个问题。你能找到解决方案吗?我想我也有同样的问题。explain查询几乎立即返回,
    winningPlan
    是正确的索引,但查询需要永远执行。
    db.currentOp().inprog
    没有
    plansummmary
    属性。
    {
        "queryPlanner" : {
            "mongosPlannerVersion" : 1,
            "winningPlan" : {
                "stage" : "SHARD_MERGE",
                "shards" : [ 
                    {
                        "shardName" : "...",
                        "plannerVersion" : 1,
                        "indexFilterSet" : false,
                        "parsedQuery" : { ... },
                        "winningPlan" : {
                            "stage" : "SUBPLAN",
                            "inputStage" : {
                                "stage" : "OR",
                                "inputStages" : [ 
                                    {
                                        "stage" : "FETCH",
                                        "filter" : {"field1.key":{"$in":["name1","name2",/^prefix.*suffix$/]},
                                        "inputStage" : {
                                            "stage" : "IXSCAN",
                                            "keyPattern" : { "field3.key" : 1.0 },
                                            "indexName" : "field3.key_1",
                                            "isMultiKey" : true,
                                            "isUnique" : false,
                                            "isSparse" : false,
                                            "isPartial" : false,
                                            "indexVersion" : 1,
                                            "direction" : "forward",
                                            "indexBounds" : {
                                                "field3.key" : [ "[\"foobar\", \"foobar\"]" ]
                                            }
                                        }
                                    }, 
                                    {
                                        "stage" : "FETCH",
                                        "filter" : {"field1.key":{"$in":["name1","name2",/^prefix.*suffix$/]},
                                        "inputStage" : {
                                            "stage" : "IXSCAN",
                                            "keyPattern" : { "field2.key" : 1.0 },
                                            "indexName" : "field2.key_1",
                                            "isMultiKey" : true,
                                            "isUnique" : false,
                                            "isSparse" : false,
                                            "isPartial" : false,
                                            "indexVersion" : 1,
                                            "direction" : "forward",
                                            "indexBounds" : {
                                                "field2.key" : [ "[\"foobar\", \"foobar\"]" ]
                                            }
                                        }
                                    }
                                ]
                            }
                        },
                        "rejectedPlans" : []
                    }, 
                    ...
                    // same plan for the 3 other shards
                    ...
                ]
            }
        },
        "executionStats" : {
            "nReturned" : 0,
            "executionTimeMillis" : 27,
            "totalKeysExamined" : 4,
            "totalDocsExamined" : 4,
            "executionStages" : {
                "stage" : "SHARD_MERGE",
                "nReturned" : 0,
                "executionTimeMillis" : 27,
                "totalKeysExamined" : 4,
                "totalDocsExamined" : 4,
                "totalChildMillis" : NumberLong(63),
                ...
                // execution times for each shard
                ...
            },
            "allPlansExecution" : []
        },
        "ok" : 1.0
    }