【发布时间】:2015-01-27 21:10:44
【问题描述】:
我的 mongodb 集合中有一些字段是搜索的可选部分。如果我不知道用户可能正在查询哪些字段,我如何才能一致地索引此查询(即每个查询,无论参数如何都将使用索引)?
【问题讨论】:
-
您唯一的选择是为每个可能的字段组合创建一个单独的索引。
-
@Philipp - 我对您如何处理字段可能不是查询的一部分的情况感到更加困惑。比如说,我正在创建一个查询杂货店营养数据的服务。如果我已为
gluenFree字段编制索引,但用户不是无麸质且未将其添加到他/她的搜索中,我如何确保使用复合索引? -
当查询只提供索引的开头时,也可以使用复合索引。
-
啊,所以如果我要添加一个不属于索引的附加查询,那么索引只会打折,如果我省略了部分索引,则不会打折?
-
当你寻找比索引覆盖更多的字段时,它仍然有部分用途,因为它可以用来将需要扫描的候选文档限制为与索引匹配的那些。当您遗漏索引所涵盖的字段时,这些字段应该是索引的最后一个字段,因为缺少字段之后的任何字段都无法使用。