我正在使用mongodb优化我的查询。
在正常的sql查询中,有一个顺序,其中应用了where子句。对于例如select * from employees where department="dept1" and floor=2 and sex="male"
,首先应用department="dept1"
,然后应用floor=2
,最后sex="male"
。
我想知道它是否会在mongodb中以类似的方式发生。
例如。
DbObject search = new BasicDbObject("department", "dept1").put("floor",2).put("sex", "male");
这里将首先应用哪个匹配子句,或者实际上mongo以这种方式工作。
这个问题基本上源于我对SQL数据库的背景。
请帮忙。
答案 0 :(得分:0)
如果没有索引,我们必须扫描整个集合(集合扫描)才能找到所需的文档。在您的情况下,如果您想申请订单[部门,楼层和性别],您应该创建此复合索引:
db.employees.createIndex( { "department": 1, "floor": 1, "sex" : 1 } )
作为文档:https://docs.mongodb.org/manual/core/index-compound/
db.products.createIndex({“item”:1,“stock”:1})
复合索引中字段的顺序非常重要。在里面 在前面的示例中,索引将包含对文档的引用 首先按项目字段的值排序,并在每个值的范围内排序 项目字段,按库存字段的值排序。