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查询,其中我将选择属性值为2000,2001或2002的"year"对象,但没有其他对象。 这是最好作为具有sort()find(),还是每个值有三个单独的find()? 如果这取决于我的集合的大小,那么更有效的搜索模式会在多大程度上发生变化?

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

您也可以为此使用$in

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

它的性能应该与范围查询非常相似。

相关内容

最新更新