服务器处理的以下逻辑等效查询是否有所不同?
{"Name":"1"}
{$and:[{"Name":"1"},{$or:[{"Name":"1"},{"Tag":"a"}]}]}
由于第二个查询包含"标记"字段,它会影响索引使用吗?
答案 0 :(得分:1)
如果你想试验并看看mongo为每个查询做了什么,你可以在mongo shell中使用一个可解释的对象。
您可以使用光标(https://docs.mongodb.org/manual/reference/method/cursor.explain/):
创建它db.example.find({a:17, b:55}).sort({b:-1}).explain()
或者你可以创建一个可解释的对象并用它来执行查询(https://docs.mongodb.org/v3.0/reference/explain-results/#explain-output):
var exp = db.example.explain()
exp.help() // see what you can do with it
exp.find({a:17, b:55}).sort({b:-1}) // execute query over the object
我无法回答您的问题,因为您没有提供有关数据库中定义的索引的信息,但使用此信息,您可以在" queryPlanner"中自行查看。部分。如果它使用索引,它会显示" IXSCAN" at" stage"领域。