1

我有一个如下查询。显然更好的索引是“platform_1_keyuserAccountID_1_weiboAccountID_1_postTime_1”,但是 mongodb 选择“weiboAccountID_1”,我做错了吗?


db.inbox_weibo.find({platform: "sina", keyuserAccountID:"1665337047", weiboAccountID: "2271338624"}).explain(true);


{
    "cursor" : "BtreeCursor weiboAccountID_1",
    “isMultiKey”:假,
    “n”:1,
    “nscannedObjects”:1,
    “nscanned”:1,
    “nscannedObjectsAllPlans”:24,
    “nscannedAllPlans”:634425,
    “scanAndOrder”:假,
    “indexOnly”:假,
    “nYields”:1,
    “nChunkSkips”:0,
    “毫”:2912,
    “索引边界”:{
        “微博账号”:[
            [
                "2271338624",
                “2271338624”
            ]
        ]
    },
    “所有计划”:[
        {
            "cursor" : "BtreeCursor weiboAccountID_1",
            “isMultiKey”:假,
            “n”:1,
            “nscannedObjects”:1,
            “nscanned”:1,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “微博账号”:[
                    [
                        "2271338624",
                        “2271338624”
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_dealed_1_operatorID_1_weiboAccountID_1_postTIme_-1",
            “isMultiKey”:假,
            “n”:1,
            “nscannedObjects”:1,
            “nscanned”:62,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “成交”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “操作员ID”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “微博账号”:[
                    [
                        "2271338624",
                        “2271338624”
                    ]
                ],
                “后时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_weiboAccountID_1_postTime_-1",
            “isMultiKey”:假,
            “n”:1,
            “nscannedObjects”:1,
            “nscanned”:1,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “微博账号”:[
                    [
                        "2271338624",
                        “2271338624”
                    ]
                ],
                “后时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_keyuserAccountID_dealed_postTime_weiboAccountID",
            “isMultiKey”:假,
            “n”:1,
            “nscannedObjects”:1,
            “nscanned”:634331,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “成交”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “后时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ],
                “微博账号”:[
                    [
                        "2271338624",
                        “2271338624”
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_mid_1",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “中” : [
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_dealerID_1",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “经销商ID”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor distinctAccountAgg",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “成交”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “操作员ID”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “后时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor fanCountUndealed",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “成交”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “来自类型”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “粉丝数”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ],
                “后时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ],
                “使用图片”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor retweetCountUndealed",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “成交”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “来自类型”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “sourceRetweetCount”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ],
                “后时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ],
                “使用图片”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor interactUndealed",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “成交”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “来自类型”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “用户交互计数”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ],
                “后时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ],
                “使用图片”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_dealed_1_dealTime_-1",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “成交”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “交易时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_dealerID_1_postTime_-1",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “经销商ID”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “后时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_postTime_-1",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “平台” : [
                    [
                        “新浪”,
                        “新浪”
                    ]
                ],
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “后时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor keyuserAccountID_dealed_createTime_-1",
            “isMultiKey”:假,
            “n”:0,
            “nscannedObjects”:2,
            “nscanned”:3,
            “scanAndOrder”:假,
            “indexOnly”:假,
            “nChunkSkips”:0,
            “索引边界”:{
                “keyuserAccountID”:[
                    [
                        "1665337047",
                        “1665337047”
                    ]
                ],
                “成交”:[
                    [
                        {
                            “$minElement”:1
                        },
                        {
                            “$ 最大元素”:1
                        }
                    ]
                ],
                “创建时间”:[
                    [
                        {
                            “$ 最大元素”:1
                        },
                        {
                            “$minElement”:1
                        }
                    ]
                ]
            }
        }
4

1 回答 1

1

我不认为另一个指数是“更好”的。似乎两个索引(您建议的索引和 mongodb 使用的索引)都返回带有“nscanned:1”的查询对象,因此它们对于此查询同样完美。我说,由于您的测试数据集中的“weiboAccountID”准确定义了您正在寻找的一条记录,因此在这种情况下不需要其他索引 - mongodb 将选择第一个合适的。尝试使用相同的 weiboAccountID 添加更多记录(如果重复的 Id 在您的数据集中完全有效)并重新运行查询,看看它如何更改执行。

于 2015-02-13T08:55:51.067 回答