对我来说,提出这个问题有点困难。问题是,我需要获得100个评分最高的文档,然后按照其他标准对结果进行排序。
我是mongodb的初学者,我天真地尝试过:
db.myCollection
.find() // get all the data
.sort({ "statistics.average": -1 }) // sort by rating
.limit(100) // get the 100 best rated
.sort({ "statistics.foobar": -1 }) // sort the result by the second criteria
但它不起作用,看起来对所有数据进行了最后一次排序。
如何正确创建符合我需求的查询?
答案 0 :(得分:1)
Mongo在限制结果之前应用排序,无论您调用排序和限制光标的顺序如何,但使用.aggregate()
方法将得到预期的结果。
db.mycollection.aggregate([
{ "$sort": { "statistics.average": -1 } },
{ "$limit": 100 },
{ "$sort": { "statistics.foobar": -1 } }
])
答案 1 :(得分:0)
db.myCollection
.find() // get all the data
.sort({ "statistics.average": -1 ,"statistics.foobar": -1 }) // sort by rating followed by foobar
.limit(100) // get the 100 best rated