相关疑难解决方法(0)

MongoDB aggreagte填补缺失的天数

我有一个包含以下文件的产品系列:

{ "_id" : 1, "item" : "abc", created: ISODate("2014-10-01T08:12:00Z") }
{ "_id" : 2, "item" : "jkl", created: ISODate("2014-10-02T09:13:00Z") }
{ "_id" : 3, "item" : "hjk", created: ISODate("2014-10-02T09:18:00Z") }
{ "_id" : 4, "item" : "sdf", created: ISODate("2014-10-07T09:14:00Z") }
{ "_id" : 5, "item" : "xyz", created: ISODate("2014-10-15T09:15:00Z") }
{ "_id" : 6, "item" : "iop", created: ISODate("2014-10-16T09:15:00Z") }
Run Code Online (Sandbox Code Playgroud)

我想绘制一个描述产品数量的图表,所以我使用mongodb聚合框架按天计算产品组:

  var proj1 = {
      "$project": {
          "created": 1,
          "_id": 0,
          "h": {"$hour": "$created"},
          "m": {"$minute": "$created"},
          "s": {"$second": …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

14
推荐指数
1
解决办法
2493
查看次数

填写记录中缺失的日期

我有一个集合ProductViews

产品视图

{
    productId: '5b8c0f3204a10228b00a1745,
    createdAt: '2018-09-07T17:18:40.759Z',
}
Run Code Online (Sandbox Code Playgroud)

我有一个查询来获取特定产品的每日浏览量。

询问

ProductView.aggregate([
    { $match: { productId } },
    { $project: { day: { $substr: ["$createdAt", 0, 10] } } },
    {
        $group: {
            _id: "$day",
            count: { $sum: 1 },
            time: { $avg: "$createdAt" },
        }
    },
    { $sort: { _id: 1 } },
    {
        $project: {
            date: '$_id',
            views: '$count',
        },
    },
]).exec((err, result) => ...)
Run Code Online (Sandbox Code Playgroud)

当前结果

[
    { date: '2018-09-01', views: 1 },
    { date: '2018-09-02', views: …
Run Code Online (Sandbox Code Playgroud)

aggregation mongoose mongodb node.js aggregation-framework

9
推荐指数
1
解决办法
3464
查看次数