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

如何使用MongoDB的sortArray按自定义布尔条件排序variants数组?

解决MongoDB数组按自定义条件排序的问题

针对你需要将variants数组中props非空的元素排在前面的需求,可以用MongoDB的$sortArray结合条件表达式实现,具体聚合管道如下:

db.collection.aggregate([
  {
    $addFields: {
      variants: {
        $sortArray: {
          input: "$variants",
          sortBy: {
            $cond: {
              if: { $gt: [{ $size: "$props" }, 0] },
              then: 0,
              else: 1
            }
          }
        }
      }
    }
  }
])

代码说明:

  • $addFields:保留原文档所有字段的同时,更新variants字段的值
  • $sortArray:对指定数组进行排序,其中:
    • input:指定要排序的原数组"$variants"
    • sortBy:自定义排序规则,用$cond判断每个variant的props数组长度:
      • 如果props长度大于0(非空),返回0
      • 如果props为空数组,返回1
        升序排序时,0会排在1前面,正好满足你要的非空props元素优先的需求

执行上述聚合后,就能得到你预期的结果。

内容的提问来源于stack exchange,提问作者Lucien Chardon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:47:10