有没有办法对limit返回的文档进行排序? 示例:
//returns 10 documents:
db.users.find()
.sort({last_online_timestamp:-1})
.limit(10)
//returns 10 another documents
db.users.find()
.sort({last_online_timestamp:-1})
.limit(10)
.sort({messages_count:1});
我想要的是获得 10 个最后登录的用户,然后按消息数对他们进行排序。
最佳答案
您可以使用聚合,例如
db.users.aggregate([
{"$sort": {"last_online_timestamp":1}},
{"$limit": 10},
{"$sort": {"messages_count": 1}}
])
这将经历集合中文档的阶段:
- 按
last_online_timestamp
字段升序排序 - 限于 10 个文档
- 这 10 个文档将按
messages_count
字段升序排序
您可能希望将 {"$sort": {"last_online_timestamp":1}
更改为 {"$sort": {"last_online_timestamp":-1}
取决于 last_online_timestamp
有关 Mongo 聚合的更多信息,请参阅 https://docs.mongodb.com/manual/aggregation/ .
关于MongoDB 对限制后的结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43472561/