簡體   English   中英

使用 mongodb 聚合的多個字段值的不同計數

[英]Distinct count of multiple fields values using mongodb aggregation

我正在嘗試通過一個 MongoDB 聚合查詢來計算多個字段的不同值。

所以這是我的數據:

{
"_id":ObjectID( "617b0dbacda6cbd1a0403f68")
"car_type": "suv",
"color": "red",
"num_doors": 4
},

{
"_id":ObjectID( "617b0dbacda6cbd1a04078df")
    "car_type": " suv ",
    "color": "blue",
    "num_doors": 4

},
{
"_id":ObjectID( "617b0dbacda6cbd1a040ld45")
    "car_type": "wagon",
    "color": "red",
    "num_doors": 4
},
{
"_id":ObjectID( "617b0dbacda6cbd1a0403dcd")
    "car_type": "suv",
    "color": "blue",
    "num_doors": 4
},
{
"_id":ObjectID( "617b0dbacda6cbd1a0403879")
    "car_type": " wagon ",
    "color": "red",
    "num_doors": 4
},
{
"_id":ObjectID( "617b0dbacda6cbd1a0405478")
    "car_type": "wagon",
    "color": "red",
    "num_doors": 4
}

我想按 car_type 對每種顏色進行不同的計數:

"car_type": "suv"
"red":2,
"blue":2

我能夠區分和計算所有 colors 但我無法通過 car_type 區分它們

詢問

  • 組特定第一(cartype+color),計數相同 colors
  • 在 (cartype) 之后的組不太具體,以獲取每個car_type的所有顏色/計數
  • 修復結構的項目和$arrayToObject以制作 colors 鍵和計數值

*query 假定" wagon "輸入錯誤(我的意思是多余的空格),如果您的收藏有這些問題,請使用$trim清除數據庫中的這些問題。

測試代碼在這里

aggregate(
[{"$group": 
    {"_id": {"car_type": "$car_type", "color": "$color"},
      "count": {"$sum": 1}}},
  {"$group": 
    {"_id": "$_id.car_type",
      "colors": {"$push": {"k": "$_id.color", "v": "$count"}}}},
  {"$project": 
    {"_id": 0,
      "car_type": "$_id",
      "colors": {"$arrayToObject": ["$colors"]}}},
  {"$replaceRoot": {"newRoot": {"$mergeObjects": ["$colors", "$$ROOT"]}}},
  {"$project": {"colors": 0}}])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM