我想使用mongodb在图表中显示每日计数节目。我今天首先在图表中生成最后5天的日期。在我的mongodb中,我每天都有物品商店。显示我现在我想只使用group by得到计数日期,但我不知道如何使用group by。我写了一个查询,但这个查询返回所有的对象,并没有返回任何计数,所以任何人都知道如何做到这一点请告诉我。我也有一个日期,所以我想开始计算使用这个日期等于或大于。
这是我的查询=>
{
"_id" : ObjectId("578fa05a7391bb0d34bd3c28"),
"Action" : "Comment",
"datetime" : 1507549688000
"count":2
},
{
"_id" : ObjectId("578fa05a7391bb0d34bd3c30"),
"Action" : "Comment",
"datetime" : 1507466888000
"count":1
}
这是我在db =>中的数组
{{1}}
我的预期o / p =>
{{1}}
上面我刚刚发布了一些像这样的对象更多的对象存储在数据库中,所以我想按日期使用group计数。任何人都知道如何做到那就请让我。
答案 0 :(得分:1)
您可以尝试以下聚合。
考虑以下记录
LPWSTR bgPath;
if(!SystemParametersInfo(SPI_GETDESKWALLPAPER, 0, bgPath, SPIF_UPDATEINIFILE)){
qDebug() << *bgPath;
return;
}
qDebug()<< "an error occurred";
聚合:
{
"_id": ObjectId("59db7a4d4f40c83c7bcaba0d"),
"History": [
{
"_id": ObjectId("578fa05a7391bb0d34bd3c28"),
"Action": "Comment",
"datetime": millis
},
{
"_id": ObjectId("578fa05a7391bb0d34bd3c21"),
"Action": "Comment",
"datetime": millis
},
{
"_id": ObjectId("578fa05a7391bb0d34bd3c22"),
"Action": "Comment",
"datetime": millis
},
{
"_id": ObjectId("578fa05a7391bb0d34bd3c22"),
"Action": "Comment",
"datetime": millis
}
]
}
输出:
InstaAc.aggregate([
{
"$match": {
"_id": ObjectId("59db7a4d4f40c83c7bcaba0d"),
"History.datetime": {
"$gte": millis
}
}
},
{
"$unwind": "$History"
},
{
"$match": {
"History.datetime": {
"$gte": millis
}
}
},
{
"$addFields": {
"History.datetime": {
"$add": [
new Date(0),
"$History.datetime"
]
}
}
},
{
"$group": {
"_id": {
"$dateToString": {
"format": "%Y-%m-%d",
"date": "$History.datetime"
}
},
"count": {
"$sum": 1
},
"History": {
"$push": "$History"
}
}
},
{
"$sort": {
"_id": 1
}
},
{
"$limit": 1
}
])