2016-03-18 29 views
1

埋め込みドキュメント内の特定のキーの値のカウントを照会することは可能ですか?ここで埋め込みドキュメントのMongodbグループクエリ

は私の文書である:

{ "_id" : 1, "drives" : [ {"fw": "A"}, {"fw": "B"} ] } 
{ "_id" : 2, "drives" : [ {"fw": "B"}, {"fw": "C"} ] } 
{ "_id" : 3, "drives" : [ {"fw": "A"}, {"fw": "C"} ] } 
{ "_id" : 4, "drives" : [ {"fw": "A"}, {"fw": "D"} ] } 

、私は "FW" のカウントを取得したいと思います:

出力:

カウント:{ "A":3、「B ":2、" C ":2、" D ":1}

+0

はい、可能です。同様のグループをグループ化し、集計パイプラインを使用してカウントを返すことができます。具体的には、$ group。試してみる。 [docs](https://docs.mongodb.org/manual/reference/operator/aggregation-pipeline/) – jmugz3

+0

この例のJSONは無効です。「ドライブ」はオブジェクトの配列であり、配列のオブジェクト? –

+0

@JoachimIsakssonが修正されました。指摘してくれてありがとう。 –

答えて

3

集計します。最初に$unwindfw値ごとに行を取得する配列fwとを1とし、fwの値を取得する配列。

db.test.aggregate({ $unwind: "$drives" }, 
        { $group: { _id: "$drives.fw", cnt: {$sum:1} } }) 

# { "_id" : "D", "cnt" : 1 } 
# { "_id" : "C", "cnt" : 2 } 
# { "_id" : "B", "cnt" : 2 } 
# { "_id" : "A", "cnt" : 3 } 
+0

これは、総カウントを与える、それはユニークなカウントを得ることは可能ですか? –

+1

私の悪いいいですね。 –

+0

あなたのコメントが当てはまらない場合は、削除することができます。答えが正しければ、それを受け入れるべきです。 –

関連する問題