集合中的文档遵循以下给出的模式 -
{
"Year": String,
"Month": String
}
我想完成以下任务 -
我想运行distinct
个问题,比如
db.col.distinct('Month', {Year: '2016'})
我在{'Year': 1, 'Month': 1}
上有一个复合索引,所以
直觉看起来像答案可以通过观察来计算
只有指数。数百万的集合上的查询性能是
现在真的很穷有什么方法可以做到这一点吗?
month
的最新year
。一种方法是对上述distinct
查询的结果进行排序,并将第一个元素作为答案。
正如@ Blakes Seven在下面的讨论中指出的更好,更快的解决方案是使用查询db.col.find({ "Year": "2016"}).sort({ "Year": -1, "Month": -1 }).limit(1)