MongoDB 将组对象转换为 key:value (_id:count) 对象
Posted
技术标签:
【中文标题】MongoDB 将组对象转换为 key:value (_id:count) 对象【英文标题】:MongoDB convert group object to key:value (_id:count) object 【发布时间】:2021-09-27 19:31:47 【问题描述】:我有一个具有类似结果的聚合管道。
[
"_id":"1621",
"count":567
,
"_id":"1658",
"count":1089
...
]
我怎样才能把这个结果转换成键:值对(“_idValue”:“countValue”),像这样?
"1621": 567,
"1658": 1089
...
我的管道是:
pipeline = [
'$match':
'date': '$gte': start_date, '$lt': end_date
,
'$group':
'_id': '$networkId',
'count': '$sum': 1
,
'$sort': '_id': 1
,
]
【问题讨论】:
如果 id 不唯一会怎样? @WernfriedDomscheit 他们是独一无二的 【参考方案1】:在您的管道阶段之后添加以下阶段,
$group
通过null构造键值对数组
$arrayToObject
将上述格式化数组转换为对象
$repalceRoot
将上面转换的对象替换为根
pipeline = [
// .. add your pipeline stages here
$group:
_id: null,
object:
$push: k: "$_id", v: "$count"
,
$replaceRoot: newRoot: $arrayToObject: "$object"
]
Playground
【讨论】:
以上是关于MongoDB 将组对象转换为 key:value (_id:count) 对象的主要内容,如果未能解决你的问题,请参考以下文章