2017-09-27 11 views
0

検索しましたが、私の問題の答えが見つかりませんでした。 私はMongoDBの中で、このサンプル構造のコレクションを持っている:私はすべての文書(Manual_Tags [] ._ソースのコレクション内の既存の「タグ」の各値のインスタンスの数を知っておく必要がありMongoDB:ネストされた配列の値を集計して集計する

{ 
    "_id": ObjectID(1), 
    "Manual_Tags": [ 
    { 
     _source: { 
     tags: [ "tag1", "tag2", "tag3"] 
     other_values: ... 
     } 
    } 
    ] 
} 
{ 
    "_id": ObjectID(2), 
    "Manual_Tags": [ 
    { 
     _source: { 
     tags: [ "tag2", "tag3", "tag4"] 
     other_values: ... 
     } 
    } 
    ] 
} 

。タグ[])。つまり、上記のサンプルでは2つの文書のために、リストは以下のようになりますされています タグ1:1 TAG2:2 TAG3:2 TAG4:任意の助けを事前に1つの

感謝。

答えて

0

aggregationのクエリを参照する必要があります。まず、両方の配列を巻き戻してから、タグをグループ化してカウントを取得する必要があります。

db.collection.aggregate(
    {$unwind: '$Manual_Tags'}, 
    {$unwind: '$Manual_Tags._source.tags'}, 
    {$group: {_id: '$Manual_Tags._source.tags', count:{$sum:1}}} 
) 
+0

ありがとうございます。その単純なクエリはそれを行いました。 – Alfredo