我对性能问题感兴趣。假设我有一个字段ref
的集合(在每个文档中表示)。我想要的是查找特定范围内的所有文档(例如,[1-1,000,000]。在db性能方面,以下查询是否有任何差异
db.test.find({"ref": {"$gte":1, "$lte": 1000000}})
和
db.test.find({"ref": {"$in": [1,2,3, ..., 1000000]}})
其他问题是关于内存消耗。如果我使用pymongo驱动程序,哪种查询更适合这种情况?
答案 0 :(得分:0)
存在巨大差异,因为范围查询将在内部转换为正则表达式查询,如果“ref”字段上有索引,则几乎可以在任何时间评估覆盖查询。
查询传递元素列表的位置有点重,因此需要花费更多时间通过线路发送它,之后MongoDb引擎必须评估每个数组元素与每个文档属性的比较。