【发布时间】:2019-06-23 08:33:12
【问题描述】:
我已阅读此文档:“Sort and Non-prefix Subset of an Index”
有了这些信息。我正在尝试回答这个 MongoDB 模拟测试问题,他们的问题是
您在 things 集合上有以下索引:
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.things"
},
{
"v" : 1,
"key" : {
"a" : 1
},
"name" : "a_1",
"ns" : "test.things"
},
{
"v" : 1,
"key" : {
"c" : 1,
"b" : 1,
"a" : 1
},
"name" : "c_1_b_1_a_1",
"ns" : "test.things"
}
]
问题: 以下哪个查询需要您将每个文档加载到 RAM 中才能完成查询?假设在查询期间没有写入数据。勾选所有适用项。
db.things.find( { b : 1 } ).sort( { c : 1, a : 1 } )
db.things.find( { c : 1 } ).sort( { a : 1, b : 1 } )
db.things.find( { a : 1 } ).sort( { b : 1, c : 1 } )
他们给出的答案是……
db.things.find( { b: 1} ).sort( {c: 1, a: 1} )
有人可以帮我理解为什么其他 2 个选项不正确,即他们如何使用索引/索引前缀。我的理解是 SORT 部分必须匹配索引列顺序。此外,建议的正确答案似乎也不符合规则(根据文档)。
【问题讨论】:
-
请参阅stackoverflow.com/questions/36142299/…,如果还不清楚,请告诉我。