MongoDB聚合-项目字段值作为字段

GJL12

将我的数据转换为棘手的格式时遇到了一些麻烦。

文档具有以下字段: subject, importance [high,medium,low]

样本文件:

{_id: "", subject: "red", importance: "high"}

我喜欢返回看起来像这样的数据:

[{_id: subject, high: 5, medium: 6, low: 3}] 

数字与每个重要性级别对应的文档数相对应

这是我到目前为止所拥有的:

{
$group: {
  _id: {subject: "$subject", importance: "$importance"},
  count: {$sum: 1},
  }
 },
 {
   $group: {
     _id: "$_id.subject",
     data: {
       $push: {
          importance: "$_id.importance", count: "$count"
       }
     }
   }
 }

有没有一种方法可以使用的值$_id.importance并将其作为键并具有$count作为值?

蝙蝠尖叫

您可以汇总如下:

  • $group通过subjectimportance,获得各自的计数。
  • 然后是棘手的部分,即条件部分,$project它将相对于importance字段可以容纳的选项数量线性增长目前是三- highlowmedium
  • $group再次返回结果,subject并使用$sum运算符对accumulate重要性字段的不同值进行计数。

样例代码:

db.t.aggregate([
{$group:{"_id":{"subject":"$subject",
                "importance":"$importance"},
         "count":{$sum:1}}},
{$project:{"_id":0,
           "subject":"$_id.subject",
           "result":{$cond:[
                           {$eq:["$_id.importance","high"]},
                           {"high":"$count"},
                           {$cond:[{$eq:["$_id.importance","low"]},
                                   {"low":"$count"},
                                   {"medium":"$count"}]}]}}},
{$group:{"_id":"$subject",
         "low":{$sum:"$result.low"},
         "medium":{$sum:"$result.medium"},
         "high":{$sum:"$result.high"}}},
])

测试数据:

db.t.insert([
{"subject":"history","importance":"high"},
{"subject":"geography","importance":"low"},
{"subject":"history","importance":"low"},
{"subject":"history","importance":"medium"},
{"subject":"geography","importance":"low"},
{"subject":"history","importance":"low"}
])

结果:

{ "_id" : "geography", "low" : 2, "medium" : 0, "high" : 0 }
{ "_id" : "history", "low" : 2, "medium" : 1, "high" : 1 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

选择字段的值作为数组mongoose / mongodb聚合

来自分类Dev

MongoDB聚合项目查找中的特定字段

来自分类Dev

mongodb聚合查询字段值长度的总和

来自分类Dev

MongoDB 聚合查询 - 组聚合字段错误

来自分类Dev

数组元素的Mongodb聚合$ in字段

来自分类Dev

存在按字段聚合的MongoDB

来自分类Dev

mongodb聚合多个嵌套字段

来自分类Dev

MongoDB-具有聚合的项目数组子字段

来自分类Dev

C#MongoDB.Driver聚合与项目不返回字段_id

来自分类Dev

Mongodb聚合管道项目

来自分类Dev

mongodb并聚合多个项目

来自分类Dev

MongoDB:使用字段值作为字段名称

来自分类Dev

mongodb聚合多个值

来自分类Dev

MongoDB检索与聚合字段对应的子级别文档值

来自分类Dev

将MongoDB聚合结果重塑为字段值文档

来自分类Dev

Mongodb查找聚合未获取所有字段值

来自分类Dev

MongoDB聚合从值减少mergeObjects字段名称

来自分类Dev

MongoDB-Jongo-聚合字段的最大值

来自分类Dev

MongoDB聚合管道:计数文档中的字段是否小于值?

来自分类Dev

在MongoDB聚合中合并数组字段

来自分类Dev

MongoDB聚合-对分组的addToSet字段求和

来自分类Dev

Mongodb尝试获取选定的字段以从聚合返回

来自分类Dev

如何计算Mongodb聚合中的字段

来自分类Dev

如何计算MongoDB聚合中的字段?

来自分类Dev

聚合查询上的Mongodb填充字段

来自分类Dev

MongoDB聚合-$ regex匹配数组字段

来自分类Dev

MongoDB聚合字段总计不正确

来自分类Dev

MongoDB聚合嵌套子文档字段

来自分类Dev

如何计算Mongodb聚合中的字段