1
鉴于以下文档。用于计算多个计算值的Mongo聚合查询
{
_id: 1,
ExpirationDate: ISODate("2017-05-02T09:29:46.006+0000")
}
{
_id: 2,
ExpirationDate: ISODate("2017-05-12T09:29:46.006+0000")
}
{
_id: 3,
ExpirationDate: ISODate("2017-05-23T09:29:46.006+0000")
}
如何使用聚合pipleline来计算以下输出?
{
"NumberOfSubscriptionExpiringToday": 12,
"NumberOfSubscriptionExpiringWithInAWeek": 4
}
我期待着用一个查询而不是两个来完成这个任务。以下是我迄今为止...
{ $match: { "ExpirationDate": {$gte: ISODate("2017-05-02T00:00:00.000+0000"), $lte: ISODate("2017-05-03T00:00:00.000+0000")}}},
{ $project: {_id:1} },
{ $count: "ExpiringToday" }
]);
{ $match: { "ExpirationDate": {$gte: ISODate("2017-05-02T00:00:00.000+0000"), $lte: ISODate("2017-05-08T00:00:00.000+0000")}}},
{ $project: {_id:1} },
{ $count: "ExpiringInSevenDays" }
]);
你为什么选择只有一天时间范围?什么是仅选择_id字段的目的?并且您没有ExpiringToday字段,尤其是在选择了_id –
之后,我可以从七天的范围开始,然后通过另一个$匹配阶段来获得一天范围并投影它。我需要使用$ addToFields来计算一天七天的范围吗? – GBackMania
@SergeyBerezovskiy更新了我的问题。我如何将两个查询合并为一个? – GBackMania