You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:39:40