【发布时间】:2017-10-10 20:46:07
【问题描述】:
我想使用 mongodb 在图表中显示每日计数。我首先在图表中生成今天到最后 5 天的日期。在我的 mongodb 中,我每天都有对象存储。显示我现在我想仅使用 group by 来计算日期,但我不知道如何使用 group by。我已经写了一个查询,但是这个查询返回所有对象并且不返回任何计数,所以任何人都知道如何做到这一点,请告诉我。我也有一个日期,所以我想用这个日期开始计数等于或大于。
这是我的查询 =>
app.get(prefix + '/GetAnalyticsByUserId', function (req, res, next) {
var instaid = req.query.instaid;
var lastdate = req.query.lastdate; // this is my date in the timestamp i want to using this equal or greater date and count
InstaAc.aggregate(
{ $match: { _id: ObjectId("595f6bcdeb3db12064f26336") } },
{ $unwind: '$History' },
{ $match: { 'History.Action': { $eq: "Comment" } } },
{ $match: { 'History.datetime': { $gte: "datetime" } } },
{ $group: { _id: '$_id', History: { $push: '$History' } } }).exec(function (err, data) {
if (err) {
console.log(err); res.send(err)
}
else {
console.log(data);
res.send(data);
}
})
});
这是我在数据库中的数组 =>
{
"_id" : ObjectId("578fa05a7391bb0d34bd3c28"),
"Action" : "Comment",
"datetime" : 1507549688000
},
{
"_id" : ObjectId("578fa05a7391bb0d34bd3c28"),
"Action" : "Comment",
"datetime" : 1507553288000
}
{
"_id" : ObjectId("578fa05a7391bb0d34bd3c30"),
"Action" : "Comment",
"datetime" : 1507466888000
}
我的预期 o/p =>
{
"_id" : ObjectId("578fa05a7391bb0d34bd3c28"),
"Action" : "Comment",
"datetime" : 1507549688000
"count":2
},
{
"_id" : ObjectId("578fa05a7391bb0d34bd3c30"),
"Action" : "Comment",
"datetime" : 1507466888000
"count":1
}
在上面我刚刚发布了一些像这样的对象,更多对象存储在数据库中,所以我想使用按日期分组来获取计数。任何人知道如何做到这一点,请告诉我。
【问题讨论】:
标签: mongodb