MongoDB聚合多字段排序:同blockNumber时按uniqueId降序
修改MongoDB聚合查询实现多字段排序需求
你只需要在聚合的$sort阶段同时指定blockNumber和uniqueId两个字段的降序规则即可,MongoDB的$sort支持多字段排序,字段顺序决定排序优先级:先按blockNumber降序排列,当多个文档的blockNumber相同时,再按uniqueId降序排序。
修改后的聚合查询语句
myModel.aggregate([ { $match: someFilter, }, { $sort: { blockNumber: -1, uniqueId: -1 }, }, ])
验证说明
执行上述查询后,会先将所有文档按blockNumber从高到低排序,对于blockNumber相同的文档,再按uniqueId从大到小排列,最终得到你期望的结果:
{ "name": "some name", "blockNumber": 10, "uniqueId": 2 }, { "name": "some name", "blockNumber": 10, "uniqueId": 1 }, { "name": "some name", "blockNumber": 9, "uniqueId": 3 }
补充信息
你的原始数据:
{ "name": "some name", "blockNumber": 10, "uniqueId": 2 }, { "name": "some name", "blockNumber": 9, "uniqueId": 3 }, { "name": "some name", "blockNumber": 10, "uniqueId": 1 }
原查询语句:
myModel.aggregate([ { $match: someFilter, }, { $sort: { blockNumber: -1 }, }, ])
原查询结果:
{ "name": "some name", "blockNumber": 10, "uniqueId": 1 }, { "name": "some name", "blockNumber": 10, "uniqueId": 2 }, { "name": "some name", "blockNumber": 9, "uniqueId": 3 }
内容的提问来源于stack exchange,提问作者Naple
相关产品推荐
相关产品推荐

