我的文档类似于存储在我的数据库中的文档:
[
{
"location_path": {
"Country": "US",
"State": "Illinois",
"City": "Chicago"
},
"myvalue": 1
},
{
"location_path": {
"Country": "US",
"State": "Houston",
"City": "Texas"
},
"myvalue": 4
},
{
"location_path": {
"Country": "US",
"State": "Illinois",
"City": "Chicago"
},
"myvalue": 2
}
]
我在构建聚合的$group
阶段时遇到一些问题,以便使用相同的位置路径 和 对每个文档进行分组遇到myvalue
的每个唯一值的组。所以,我的预期输出将是:
{
"location_path": {
"Country": "US",
"State": "Illinois",
"City": "Chicago"
},
"myvalue": {1: 1, 2: 1}
},
{
"location_path": {
"Country": "US",
"State": "Houston",
"City": "Texas"
},
"myvalue": {4: 1}
}
我怎样才能达到类似于我想要的东西?到目前为止,我将此作为我的$group
阶段:
{
'$group': {
'_id': {
'location_path': '$location_path',
'option': '$myvalue'
},
'count': {'$sum': 1}
}
}
如果结果与我的预期有所不同,那没关系,但location_path
和myvalue
每个唯一值的计数很重要。
答案 0 :(得分:1)
{
'$group': {
'_id': { 'path': '$location_path', 'value': '$myvalue'},
'count': {'$sum': 1}
},
'$project': {
'_id': '$_id.path',
'myvalue': '$_id.value',
'count': '$count',
},
'$group': {
'_id': '$_id',
'values': {'$push': {'myvalue': '$myvalue', 'count': '$count'}}
}
}