mongodb - MognoDB - 基于日期的数组聚合计数
问题描述
所以我正在尝试进行聚合查询。我有看起来像这样的文件:
{
"_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
}
因此,我如何根据date计算相似的数组?
解决方案
试试这个
db.collection.aggregate([
{
$addFields:{
date:{ $substr: ["$date", 0, 10] }
}
},
{
$group:{
_id:"$date",
date:{$first:"$date"},
value:{$first:"$value"},
count:{$sum:1}
}
}
])
推荐阅读
- javascript - 如何在控制台中打印表格行数据
- c# - 如何在 Double 参数中接受逗号分隔符
- xml - 未找到元素“nativescript-ui-sidedrawer:RadSideDrawer”的 Nativescript 模块“nativescript-ui-sidedrawer”
- chef-infra - 无法使用 TestKitchen 解决厨师角色
- python - Requests 只获取网站源代码的一部分
- amazon-web-services - 当所有胶水爬虫都运行时执行我的 lambda
- swift - 从外部视图触发动画
- php - WooCommerce - 在运输方式标签的(之前)特定字符处插入新行
- javascript - 当 Promise 的 1 被拒绝时如何什么都不做
- swift - 将 firebase 数据库值转换为 Swift 变量