【发布时间】:2012-08-20 08:34:39
【问题描述】:
我有如下所示的 mongo db 集合
collection {
X: 1,
Y: 2,
Z: 3,
T_update: 123,
T_publish: 243,
T_insert: 342
}
我必须创建一个像
这样的索引{X: 1, Y: 1, Z: 1, T_update: 1}
{X: 1, Y: 1, Z: 1, T_publish: 1}
{X: 1, Y: 1, Z: 1, T_insert: 1}
但我看到的是值 X: 1, Y:1, Z:1 会导致冗余,并且我打算用于排序的唯一时间参数正在改变。有没有更好的方法来创建上述索引,这样我就不用创建三个单独的索引了。
还说我是否有类似的索引
{X: 1, Y: 1, Z: 1, T_update: 1}
我希望 Mongo 返回结果,使得 x = 5,y = 任何值,Z = 4,sort = T_update 上面的索引会有用还是我应该创建一个索引,例如
{X:1, Z:1, T_update: 1},
我希望我能避免它。
【问题讨论】:
-
回答你问题的最后一部分(其余部分由亚当回答);不,它不会将 X、Y、Z、T_update 索引用于 X、Z、T_update 查询。它总是从左到右,因此如果您想省略索引字段,这些字段必须位于复合索引的最右侧。请注意,如果您对排序字段进行排序,也可能成为该问题的一部分。