2014-03-04 77 views
0

我想以這種格式輸出:如何在Mongodb的另一個數組中添加數組?

abc: [ 
     { a:' ', b:' ', 
     c:[ {c1:' ', c2:' '}, {c1:' ', c2:' '}, {c1:' ', c2:' '}] 
     }, 

     { a:' ', b:' ', 
     c:[ {c1:' ', c2:' '}, {c1:' ', c2:' '}, {c1:' ', c2:' '}] 
     } 
] 

對於這個輸出,我想這個查詢:

db.test.aggregate(

{ 
    $group: 
    { 
     _id: "$clientId", 
     abc:{ 
      $push:{ 
       "a":"$a", 
       "b":"$b", 
       c:{ 
        $addToSet:{ 
         "c1":"$c1", 
         "c2":"$c2" 
        } 
       }, 
      } 
     } 
    } 
} 

結果陣列中使用此,我只得到數組c,而不是A和B值。

請幫我解決這個問題。

+0

你的數據不能幫助你的問題,像這樣的空值很容易被誤解。你期望合併什麼? c數組中的唯一值還是將所有內容放在一起?如果你用1來編輯你的答案,那麼每個人都會更清楚。字段中的一些值,2。顯示你期望得到的結果。 –

回答

0

需要在聚合框架中使用兩個group by子句,因爲我們不能在同一個組塊中創建兩個數組。

以下是查詢到有需要的輸出:

db.test.aggregate(
    {$group:{ 
     _id:{"a": "$a","langName": "$b"}, 
     c:{$addToSet:{ 
      "c1":"$c1", 
      "c2":"$c2" 
      }} 
     } 

     } 
    , 
    {$group: { 
      _id: "$_id", 
      abc:{$addToSet:{ 
       "a":"$_id.a", //gets the upper a element of _id of above group 
       "b":"$_id.b", 
      c:"$c"  // gets the full array that has been formed in the above group by. 
      } 
     }   
    } 
    } 
    ) 

我一直在試圖用一個$,而不是$ _id.a這就是爲什麼我所面臨的問題。 此查詢解決了我的問題。 :)

相關問題