问题
我想只使用MongoDB Aggregate完成一项任务,而不需要额外的代码.这与我们运行聚合的环境有关.
我们有users
件藏品.在我们的应用程序中,可以创建和删除用户.createdAt
字段具有创建用户的日期,而deletedAt
字段具有删除用户的日期.
我想创建一个聚合,能够计算的活跃(不删除)不同的用户数量,我们每个月,从第一个用户被创建的月份,直到现在.
用更古怪的话来说,我想找出从创建第一个用户的月份开始,每个日期范围从createdAt
开始到deletedAt
结束的日期范围的数量,这些日期范围与每个月相交.我们希望避免手动输入每个月,因为这会 destruct 我们想要进行的自动化,所以我们需要以编程方式获取月份,这样聚合现在和将来都可以工作.
示例
让我们假设我的集合users
具有以下三个条目:
{
"_id" : ObjectId("5fbf2996846471279461asd87"),
"createdAt" : ISODate("2023-07-26T04:05:36.314Z"),
"deletedAt" : ISODate("2023-11-15T07:06:36.314Z"),
}, {
"_id" : ObjectId("6fbf2996846471279461asd87"),
"createdAt" : ISODate("2023-09-05T09:05:36.314Z"),
}, {
"_id" : ObjectId("7fbf2996846471279461asd87"),
"createdAt" : ISODate("2023-10-14T04:05:36.314Z"),
"deletedAt" : ISODate("2023-10-15T07:06:36.314Z"),
},
所以我希望输出是这样的:
{
"month": "2023-07",
"count": 1,
}, {
"month": "2023-08",
"count": 1,
}, {
"month": "2023-09",
"count": 2,
}, {
"month": "2023-10",
"count": 3,
}, {
"month": "2023-11",
"count": 2,
}, {
"month": "2023-12",
"count": 1,
}, {
"month": "2024-01",
"count": 1,
},
如有任何帮助,我们不胜感激!
谢谢!