首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB -如何将两种类型结合起来

问MongoDB -如何将两种类型结合起来
EN

Stack Overflow用户
提问于 2015-05-14 22:09:26
回答 1查看 362关注 0票数 0

我想将这一类型规定为一个关键的时间点:$currentDate。这意味着,按降序排序旧日期,但按升序排序未来日期。

代码语言:javascript
复制
---future---
18.5
17.5
16.5
---today---
14.5
13.5
12.5
---past---

成为:

代码语言:javascript
复制
---future---
16.5
17.5
18.5
---today--
14.5
13.5
12.5
---past---

它将通过聚合框架完成,可能是由$cond组成的,我希望它从一个降序开始,以利用索引。任何建议我都会感激的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-05 08:38:24

三年后重新讨论了我自己的问题,我自己找到了一个很好的解决方案,只提出了一个问题。

考虑到特殊日期字段是"stipulatedDate",我们将为特殊的排序目的创建另一个日期字段,称为"stipulatedDateSort“。这个是基于我们的第一个需求,但对于第二个需求是空的。这将使我们有机会在$sort中有另一种类型的字段,以满足我们的第二个需求,从而只在一个查询中完成所有的操作。

代码语言:javascript
复制
db.brands.aggregate([
{
    $addFields: {
        'activities.stipulatedDateSort': {
            $cond: {
                if: { $gt: [ '$activities.stipulatedDate', new Date() ] },
                then: "$activities.stipulatedDate",
                else: null
            }
        },
    }
},
{
    $sort: {
        'activities.stipulatedDateSort': 1,
        'activities.stipulatedDate': -1
    }
}
])

这是一次淘汰赛。

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

https://stackoverflow.com/questions/30248296

复制
相关文章

相似问题

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