我想将这一类型规定为一个关键的时间点:$currentDate。这意味着,按降序排序旧日期,但按升序排序未来日期。
---future---
18.5
17.5
16.5
---today---
14.5
13.5
12.5
---past---成为:
---future---
16.5
17.5
18.5
---today--
14.5
13.5
12.5
---past---它将通过聚合框架完成,可能是由$cond组成的,我希望它从一个降序开始,以利用索引。任何建议我都会感激的!
发布于 2018-04-05 08:38:24
三年后重新讨论了我自己的问题,我自己找到了一个很好的解决方案,只提出了一个问题。
考虑到特殊日期字段是"stipulatedDate",我们将为特殊的排序目的创建另一个日期字段,称为"stipulatedDateSort“。这个是基于我们的第一个需求,但对于第二个需求是空的。这将使我们有机会在$sort中有另一种类型的字段,以满足我们的第二个需求,从而只在一个查询中完成所有的操作。
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
}
}
])这是一次淘汰赛。
https://stackoverflow.com/questions/30248296
复制相似问题