2016-08-30 8 views
0

が、私はレコードのコレクションを持っていると言うことができます取得MongoDBは個別値の数

collection.distinct('colors') 
#returns 
['red','green','blue','orange','yellow'] 

のカウントを取得することも可能ですそれらの値が記録されているか?

たとえば、次のようにこのよう$groupステージを用い

[{'count':4,'color':'red'},{'count':2,'color':'green'}] 
+1

集約パイプラインを 'group'と組み合わせて使用​​する –

答えて

1

集約パイプライン:あなたの文書のための

db.collectionName.aggregate( 
    { $unwind: "$colors" }, 
    { $group: { "_id": "$colors", "count": { $sum: 1 } } }, 
    { $project: { "color": "$_id", "count": 1 } } 
); 

を変更することを忘れないでください

{ "count" : 1, "color" : "yellow" } 
{ "count" : 1, "color" : "orange" } 
{ "count" : 3, "color" : "blue" } 
{ "count" : 2, "color" : "green" } 
{ "count" : 4, "color" : "red" } 

になりますコレクション名。

+0

最後のパイプラインステージは' {$ project:{_id:0、color: "$ _id"、count:1}}のようにもなります ' –

+0

もちろん、それは同じ結果を表します。結果として、色の配列を持つ単一のドキュメントを達成したいだけで、質問と同様です。だから私はそれらをグループ化したのです。 – tarashypka

+0

ドキュメントを再構成するには、 '$ project'演算子を使うのが良いでしょう。最後のパイプラインステージをその投影法に置き換えると、 '_id'と' color_freq.'がなくても良い結果が得られます。 –

関連する問題