2017-09-27 1 views
0

J'ai recherché mais je n'ai pas trouvé de réponse à mon problème. J'ai une collection avec cette structure de l'échantillon dans MongoDB:MongoDB: Valeurs de groupe dans un tableau imbriqué pour obtenir le nombre

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

je dois connaître le nombre de cas pour chaque valeur de « balises » existant dans la collection pour tous les documents (Manual_Tags [] ._ source. Mots clés[]). Cela est, pour les 2 documents dans l'exemple ci-dessus, la liste serait: balise1: 1 tag2: 2 tag3: 2 TAG4: 1

Merci à l'avance pour toute aide.

Répondre

0

Vous devez regarder aggregation requêtes. D'abord, vous devez décompresser les deux tableaux et puis juste groupe sur les étiquettes pour obtenir le nombre

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

Merci. Cette simple requête l'a fait. – Alfredo