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) 对象的主要内容,如果未能解决你的问题,请参考以下文章

mongodb学习笔记

如何将地图数据转换为颤动中的对象列表?

使用 jQuery 将一个对象数组转换为另一个对象数组

在Java中将String Object转换为Jackson

如何将组的结果添加到分组的文档中? MongoDB

将组转换为数组的连接 javascript