私は非常に簡単だと思うことをしようとしています。 mongoに共通のキーと属性の可変数を持つ一連のレコードがあるとします。私はすべての属性を選択し、レコード間で名前でグループ化したいと思います。例* group by mongo aggregationを選択してください
{ 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" } })
を試してみましたすべての可能な属性。
ありがとう、私は$ pushを使用して同様のことを行い、それは動作するようです。私のフォローアップの質問は、結果セット内の内部配列を解凍して、データをフラットCSVにエクスポートすることが最善の方法であるかどうかです。 –
私はcsvを作成するためにpymongoとpythonを使用しています。残りの1つの問題は、私が$ addToSetを使用するときに、各キー値の対に対して1つの別個の値があっても、各キーの結果の配列を作成していることです。これにより、csvへのフラット化のプロセスが非常に面倒になります。キー値の配列を作成しないようにする方法はありますか? –
@RogerSanchez: '$ addToSet'や' $ push'は配列の値を返しますので、CSVエクスポートでいくつかのマッサージを行うか、別の集計関数を考慮する必要があります。たとえば、すべての値が数値で、フィールドごとに一意の値が1つしかない場合は、['$ max'](http://docs.mongodb.org/manual/reference/aggregation/)を使用して取り除くことができます。 #_S_max)を使用してください。結果の値が*時には*配列の場合は、コード内で争う必要があります。以下は、役に立つかもしれないPython要点の例です:[CSVでの配列のアラインメントの平坦化](https://gist.github.com/a39b087da394b746e4fe)。 – Stennie