Angularjs 当月每个日期的注册用户总数
这里,日期是注册日期,通过简单的分组,我得到了这样的结果Angularjs 当月每个日期的注册用户总数,angularjs,mongodb,mongoose,mongoid,Angularjs,Mongodb,Mongoose,Mongoid,这里,日期是注册日期,通过简单的分组,我得到了这样的结果 [ { date: '2019-09-01', count: 1 }, { date: '2019-09-02', count: 3 }, { date: '2019-09-04', count: 2 }, { date: '2019-09-05', count: 5 }, // ... ] 但我想要每个日期,如果在该日期
[
{ date: '2019-09-01', count: 1 },
{ date: '2019-09-02', count: 3 },
{ date: '2019-09-04', count: 2 },
{ date: '2019-09-05', count: 5 },
// ...
]
但我想要每个日期,如果在该日期用户未注册,则显示计数为0
[
{ date: '2019-09-01', count: 1 },
{ date: '2019-09-02', count: 3 },
{ date: '2019-09-03', count: 0 },
{ date: '2019-09-04', count: 0 },
// ...
]
如果用户在3和4个日期未注册,则显示0计数
monthalldate = [ '2019-09-1', '2019-09-2', '2019-09-3', '2019-09-4', '2019-09-5', '2019-09-6', '2019-09-7', '2019-09-8', '2019-09-9',
'2019-09-10', '2019-09-11', '2019-09-12', '2019-09-13',.......,
'2019-09-30' ]
User.aggregate([
{ "$group": {
"_id": { "$substr": ["$createdOn", 0, 10] },
"count": { "$sum": 1 },
"time": { "$avg": "$createdOn" },
}},
{ "$sort": { "_id": 1 } },
{ "$project": { "date": "$_id", "createdOn": "$count" }},
{ "$group": { "_id": null, "data": { "$push": "$$ROOT" }}},
{ "$project": {
"data": {
"$map": {
"input": monthalldate,
"in": {
"k": "$$this",
"v": { "$cond": [{ "$in": ["$$this", "$data.date" ] }, 1, 0 ] }
}
}
}
}},
{ "$unwind": "$data" },
{ "$group": { "_id": "$data.k", "count": { "$sum": "$data.v" }}}
]).exec(function (err, montlysub) {
// console.log(montlysub);
});
But I got the wrong result
我的用户集合
{ "_id" : ObjectId("5a0d3123f954955f15fe88e5"), "createdOn" : ISODate("2019-11-16T06:33:07.838Z"), "name":"test" },
{ "_id" : ObjectId("5a0d3123f954955f15fe88e6"), "createdOn" : ISODate("2019-11-17T06:33:07.838Z"), "name":"test2" }
$project
转换输入文档。如果某个月没有用户记录,则没有要转换的输入文档,该月也不会有任何输出
解决方法:
我不这么认为,这是误导性的标题和问题@caconde你能显示你正在进行查询的样本数据和你现有的查询吗?是的@SaikatChakrabortty我有一个编辑问题,我也想知道你正在进行查询的样本用户数据。也许你也可以把它放在这里:这样我们就容易回答了。我的用户集合{“_id”:ObjectId(“5a0d3123f954955f15fe88e5”),“createdOn”:ISODate(“2019-11-16T06:33:07.838Z”),“name:“test”},{“_id”:ObjectId(“5a0d3123f954955f15fe88e6”),“createdOn”:ISODate(“2019-11-17T06:33:07.838Z”),“name”:“test2”}