如何使用mongodb中的数组对象使用group by来明智地计算日期?

时间:2017-10-07 06:51:27

标签: mongodb

我想使用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计数。任何人都知道如何做到那就请让我。

1 个答案:

答案 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
  }
])