首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB聚合$sort

MongoDB聚合$sort
EN

Stack Overflow用户
提问于 2021-09-30 13:22:31
回答 1查看 80关注 0票数 2

所以我在聚合一些事件,它们有一个字段startTime。我需要按照该字段中的数字对这些事件进行排序--从低到高,但有些事件有0。我需要把那些有0的放在任何数字的后面。所以看起来是这样的: DB数据: 0,0,0,0,5,10,20,一个想要的结果是: 5,10,20,0,0,0,0,0

当然,结构要复杂一点,但这应该能说明问题所在。这就是现在的样子:

sortBy = { "el.endingSoon": 1 };

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-30 13:54:10

在Mongo中没有“自定义”排序函数,您可以做的是创建一个临时字段并按该字段排序,如下所示:

代码语言:javascript
复制
db.collection.aggregate([
  {
    $addFields: {
      tmpField: {
        $cond: [
          {
            $eq: [
              0,
              "$startTime"
            ]
          }, 
          1000000000,// largest possible value.
          "$startTime"
        ]
      }
    }
  },
  {
    $sort: {
      tmpField: 1
    }
  },
  {
    $project: {
      tmpField: 0
    }
  }
])

蒙戈游乐场

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69393023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档