MongoDB:查找具有三个整数值的对象,排序三个值的范围或执行三个查询?

时间:2013-12-22 02:01:35

标签: mongodb

我的基本问题是:哪个更有效?

mongo_db[collection].find(year: 2000)
mongo_db[collection].find(year: 2001)
mongo_db[collection].find(year: 2002)

mongo_db[collection].find(year: { $gte: 2000, $lte: 2002 }).sort({ year: 1 })

更多细节:我有一个MongoDB查询,我将在其中选择'year'属性值为2000,2001或2002的对象,但没有其他对象。这最好是find() sort(),还是每个值三个find()?如果它取决于我的集合的大小,更有效的搜索模式会以什么尺寸更改?

1 个答案:

答案 0 :(得分:0)

单个查询会更快,因为Mongo只需扫描集合(或其索引)一次而不是三次。但是,除非您确实希望将结果排序为单独的原因,否则您不需要sort子句用于范围查询。

你也可以使用$in

mongo_db[collection].find({year: {$in: [2000, 2001, 2002]}})

其性能应与您的范围查询非常相似。