我想要做一些我認爲很簡單的事情。假設我在mongo中有一系列具有共同關鍵字和可變數量屬性的記錄。我想在記錄中選擇所有屬性並按名稱分組。例如在mongo聚合中選擇* group
{ Name: George, x: 5, y: 3 }
{ Name: George, z: 9 }
{ Name: Rob, x: 12, y: 2 }
我想產生一個CSV,看起來像這樣:
Name X Y Z
George 5 3 9
Rob 12 2
試圖
DB.data.aggregate({ $group : { _id : "$Name" } })
不幸的是我回來所有的名字爲記錄,但不工會所有可能的屬性。
謝謝,我做了一個類似的事情使用$推,它似乎工作。我的後續問題將是從這裏是否最好的方式是將數據導出到平面CSV,展開結果集中的內部數組? –
我使用pymongo和python來創建csv。剩下的一個問題是,當我使用$ addToSet時,我將爲每個鍵創建結果數組,即使每個鍵值對只有一個不同的值。然後這使得csv變扁的過程非常繁瑣。有沒有辦法避免創建關鍵值的數組? –
@RogerSanchez:'$ addToSet'或'$ push'將返回數組值,所以你將不得不在CSV導出中做一些按摩或者考慮一個不同的聚合函數。例如,如果所有值都是數字,並且每個字段只有一個唯一值,那麼您可以使用['$ max'](http://docs.mongodb.org/manual/reference/aggregation/代替#_S_max)。如果結果值是*有時是*數組,則必須在代碼中進行爭論。下面是一個可能有所幫助的示例Python要點:[將數組展開爲CSV格式的引用字符串](https://gist.github.com/a39b087da394b746e4fe)。 – Stennie