MognoDB-根据日期汇总的阵列计数

时间:2019-04-10 06:59:03

标签: mongodb aggregation-framework mongoengine

所以我正在尝试进行聚合查询。我有如下文件:

{
    "_id": ObjectId(),
    "value": [1,2],
    "date": ISODate("2016-06-02T03:02:00.000Z")
},
{
    "_id": ObjectId(),
    "value": [1,2],
    "date": ISODate("2016-06-06T03:02:00.000Z")
},
{
    "_id": ObjectId(),
    "value": [3,2],
    "date": ISODate("2017-04-06T03:02:00.000Z")
}

我想计算在特定的年份-月份中同一数组value发生的次数。

我通过写下面的汇总来了解日期:

{
    "$group":
    {
        '_id':
        {
            "$dateToString":
            {
                "format": "%Y-%m",
                "date": "$launch_time"
            }
        }
    }
},
{
    "$sort":
    {
        "_id": -1
    }
},
{
    "$project":
    {
        "date": "$_id",
        "_id": 0,
    }
}

哪个给了我结果:

{'date': '2016-04'} ..so on

我设法用以下方法对数组进行计数:

{
    "$group":
    {
        "_id": "$home_coordinates",
        "count":
        {
            "$sum": 1
        }
    }
}

哪个给我输出:

{'_id': [1,2], 'count': 2} ..so on

如何以这样的方式组合这两个结果?

{
    "date": "2016-06",
    "value": [1,2],
    "count": 2
},
{
    "date": "2017-04",
    "value": [3,2],
    "count": 1
}
  

因此,如何根据日期计算相似的数组?

1 个答案:

答案 0 :(得分:0)

尝试一下

db.collection.aggregate([
{
$addFields:{
    date:{ $substr: ["$date", 0, 10] }

    }
},
{
$group:{
    _id:"$date",
    date:{$first:"$date"},
    value:{$first:"$value"},
    count:{$sum:1}
    }
}
])