【问题标题】:how to project grouping into object in mongodb?如何将分组投影到mongodb中的对象中?
【发布时间】:2015-07-13 05:23:10
【问题描述】:

我正在尝试使用此聚合查询在 mongodb 中执行简单的 GROUP BY/COUNT:

{
  $match:{
    'os':7
  }
},
{
  $group : {
    _id:"$status", 
    count:{$sum:1}
  }
},
{
  $project:{
    count:1,
    status:1
  }
}

它返回一个这样的数组

[{ "_id" : "ENC", "count" : 18 }
{ "_id" : "INT", "count" : 363 }
{ "_id" : "ANN", "count" : 132 }]

有没有办法将结果投影到对象中,使用分组字段作为键? 例如:

{
   ENC:18, 
   INT:363, 
   ANN:132
}

谢谢

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:

    我不认为 MongoDB 的聚合框架有 $project 可以将字段值转换为键的操作。您可以尝试使用 forEach() 游标方法转换聚合结果以遍历投影字段并在结果对象上使用 JavaScript 的 bracket-notation 来创建所需的最终对象:

    var result = [
        { "_id" : "ENC", "count" : 18 },
        { "_id" : "INT", "count" : 363 },
        { "_id" : "ANN", "count" : 132 }
    ];
    var obj = {};
    result.forEach(function (doc){
        obj[doc._id] = doc.count;
    });
    printjson(obj); // {ENC: 18, INT: 363, ANN: 132}
    

    【讨论】:

      猜你喜欢
      • 2019-01-13
      • 2021-01-28
      • 1970-01-01
      • 2022-01-08
      • 2021-07-23
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多