我知道,使用MongoDB时,对于使用复合索引的查询,它必须使用索引中的所有键或至少一些键从左边开始。例如Mongo复合索引,在查询中使用少于全部
db.products.find({ "a":"foo", "b":"bar" })
将愉快地使用索引的制成的{A,B,C}。
但是,如果我要查询:
db.products.find({"a":"foo", "c":"thing" })
我认为这不能使用索引。这可以通过在“b”上添加一个微不足道的条件来解决,例如
db.products.find({"a":"foo", "b":{ $ne : "" }, "c":"thing" })
即使我实际上并不关心b的价值。原因是我们目前有4500万个对象,并且它将继续增长,所以我们希望整合我们的索引以节省资源。
非常感谢。
你能解释一下这些查询吗? –
你的理解在双重复合指数中是严格正确的,但在三重复合指数中不一定是正确的。使用解释你将会看到,当你在a,c上查询时,实际上会使用a,b,c索引。 –