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

MongoDB升序排序时如何将null值及缺失对应字段的文档排在末尾

MongoDB 缺失排序字段/null值后置排序方案

你当前的查询已经实现了第一层排序逻辑:将有rank字段的文档排在rank字段缺失/值为null的文档前面,仅需要补充第二层排序规则,对有rank值的文档按字段本身升序排列即可,调整后的完整查询如下:

db.collection.aggregate([
  {
    $addFields: {
      sortrank: {
        $cond: {
          if: {
            $eq: [
              "$rank",
              null
            ]
          },
          then: 2,
          else: 1
        }
      }
    }
  },
  {
    "$sort": {
      "sortrank": 1,
      "rank": 1
    }
  }
])

调整说明

  • 原$cond判断逻辑可以正常覆盖「rank字段不存在」和「rank字段显式赋值为null」两种场景,不需要修改
  • 在$sort阶段新增rank: 1的升序规则后,所有sortrank为1(即有有效rank值)的文档会先按rank值从小到大排列,之后再排列sortrank为2的无值文档,完全匹配你给出的示例预期

内容的提问来源于stack exchange,提问作者prabhakar srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:45:05