簡體   English   中英

Mongodb,同時聚合組值作為鍵

[英]Mongodb while aggregate group value as key

我試圖聚合和分組值,但希望該字段之一作為鍵。

[
  {id:1, value: "x"},
  {id:2, value: "y"},
  {id:1, value: "a"},
  {id:2, value: "b"},
]

使用此查詢但沒有運氣

db.getCollection('Test').aggregate([
    {
        $group: {
            _id: "$id",
            "value": {$push: "$$ROOT" }
        } 
    }
])

試圖實現這一目標

[
 { 1:[x,a] },
 { 2:[y,b] }
]

任何人都可以幫助我進行此查詢嗎?

您需要運行$group兩次才能獲得包含k,v對數組的單個文檔。 然后您可以在該文檔上運行$arrayToObject以及$replaceRoot以將新對象提升到根級別:

db.collection.aggregate([
    {
        $group: {
            _id: "$id",
            values: { $push: "$value" }
        }
    },
    {
        $group: {
            _id: null,
            root: { $push: { k: { $toString: "$_id" }, v: "$values" } }
        }
    },
    {
        $replaceRoot: {
            newRoot: {
                $arrayToObject: "$root"
            }
        }
    }
])

蒙戈游樂場

暫無
暫無

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

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