我有一系列预订,我以这种方式查询:
db.bookings.find({client: sessId, start: {$gte: weekStart}, end: {$lte: weekEnd}}).toArray(callback)
start
和end
是日期,weekStart
和WeekEnd
也是。我不确定此查询的最佳索引。它认为它是这样的:
db.bookings.ensureIndex({client: 1, start: 1, end: -1})
或:
db.bookings.ensureIndex({client: 1, start: 1})
感谢您的帮助=)
答案 0 :(得分:0)
我认为最佳状态是
db.bookings.ensureIndex({client: 1, start: 1, end: 1})
因为排序(升序或降序)无关紧要,因为搜索的次数大于或小于。您可以在两个索引上双向搜索。但是我认为如果新数据按升序排序并且新添加的日期也越来越大,那么将新数据添加到索引末尾要快一点。
最多数据集减少属性应该是第一个索引。 (如果您有很多客户并且一个客户只有一些日期,这应该是正常情况。)