如何使用聚合 MongoDB 查找具有两列的不同字段

Posted

技术标签:

【中文标题】如何使用聚合 MongoDB 查找具有两列的不同字段【英文标题】:How to find Distinct Field with two column using Aggegation MongoDB 【发布时间】:2021-11-30 07:18:59 【问题描述】:

我有类别代码和类别名称与组和其他字段组与数组。 样本数据-

[
   
      "categoryCode":"categoryCode1",
      "categoryName":"categoryName1",
      "cat_type":A
   ,
   
      "categoryCode":"categoryCode1",
      "categoryName":"categoryName1",
      "cat_type":B
   ,
   
      "categoryCode":"categoryCode2",
      "categoryName":"categoryName2",
      "cat_type":B
   
]

和预期的输出:

[
   
      "categoryCode":"categoryCode1",
      "categoryName":"categoryName1",
      "cat_type":[A,B]
   ,
   
      "categoryCode":"categoryCode2",
      "categoryName":"categoryName2",
      "cat_type":[B]
   
]

如何以独特的价值实现这一目标。

【问题讨论】:

【参考方案1】:

$group 聚合阶段与$addToSet 运算符一起用于各个字段。

db.collection.aggregate([
  
    "$group": 
      "_id": 
        "categoryCode": "$categoryCode",
        "categoryName": "$categoryName",
        
      ,
      "cat_type": 
        "$addToSet": "$cat_type"
      
    ,
    
  ,
  
    "$project": 
      "_id": 0,
      "categoryCode": "$_id.categoryCode",
      "categoryName": "$_id.categoryName",
      "cat_type": "$cat_type"
    
  ,
  
])

Mongo Playground Sample Execution

【讨论】:

以上是关于如何使用聚合 MongoDB 查找具有两列的不同字段的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:在具有两列的表上进行无聚合的旋转

具有多列的数据框的不同聚合

excel两列乱序姓名一一对应

使用每列的选择性聚合从两列创建 SQL 值

如何仅在特定条件下执行 MongoDB 聚合阶段之一?

如何使用具有两列的 Hive sql 滞后函数?