有一个样品http://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/#indexes-covered-queriesmongodb的索引覆盖查询
任何索引的字段都是在子文档字段。要在子文档中为 索引,请使用点符号。例如,考虑一个集合 用户提供下列形式的文档:{_id:1,用户:{登录: “测试”}}收集有以下指标:
{用户:1}
{ “user.login”:1}
【用户:1}索引覆盖以下查询:
db.users.find({用户:{登录: “测试器”}},{用户:1,_id:0})
但是,{“u ser.login“:1}索引不包括以下内容 查询:
db.users.find({”user.login“:”tester“},{”user.login“:1,_id:0 } )
但是,该查询的确使用{“user.login”:1}索引来查找 匹配的文档。
我想知道为什么{“user.login”:1}索引不包括查询的根本原因。
谢谢
正如上面所解释的:“*如果任何索引字段是子文档中的字段,索引不能覆盖查询*”... – assylias 2013-05-13 12:55:45
您能否显示您的解释计划? – 2013-05-13 12:57:11
我不知道根本原因,我必须诚实,但我相信对象评估工作和点符号不是因为查询运算符可以用点符号执行 – Sammaye 2013-05-13 13:02:17