【发布时间】:2014-07-13 07:18:35
【问题描述】:
以find() 为例,它按顺序涉及字段a 和b。例如,
db.collection.find({'a':{'$lt':10},'b':{'$lt':5}})
我的集合索引数组中有两个键:
[
{
"v" : 1,
"key" : {
"a" : 1,
"b" : 1
},
"ns" : "x.test",
"name" : "a_1_b_1"
},
{
"v" : 1,
"key" : {
"a" : 1,
"b" : 1,
"c" : 1
},
"ns" : "x.test",
"name" : "a_1_b_1_c_1"
}
]
保证 mongo 将使用第一个键,因为它更准确地匹配查询,还是随机选择两个键中的任何一个,因为它们都可以工作?
【问题讨论】:
-
可以向我们展示您的索引吗?
-
用实际数组更新了我的问题(之前认为没有必要)
-
值得注意的是,您可以删除您的第一个索引 (
a_1_b_1),因为它是第二个索引的适当子集(相同的键和顺序),可用于满足相同的查询。重复索引是不必要的开销。 -
是的,这只是一个关于 MongoDB 如何工作的理论问题。我意识到这会使写入速度变慢等
标签: mongodb mongodb-query mongodb-indexes