2017-08-21 6 views
0

Dire que j'ai une base de données qui contient les éléments tels que:ElasticSearch - compte les occurrences de chaînes (imprévisibles) dans le tableau

{ 
    "elmName" : "elm1", 
    "arrayOfStrings" : [ "str1", "str4", "str2"] 
}, 
{ 
    "elmName" : "elm2", 
    "arrayOfStrings" : ["str4", "str3"] 
}, 
{ 
    "elmName" : "elm3", 
    "arrayOfStrings" : [ "str1"] 
}, 
{ 
    "elmName" : "elm4", 
    "arrayOfStrings" : [] 
} 

Les cordes dans les « arrayOfStrings » sont aléatoires et inconnues au moment de la recherche. comment puis-je interroger le compte de tous les éléments uniques sous « arrayOfStrings » tels que:

{ 
"str4" : 2, 
"str2" : 1, 
"str1" : 2, 
"str3" : 1} 

Merci!

Répondre

0

Vous pouvez utiliser LINQ pour aplatir tous les sous-listes en un seul, puis groupe par clé et compter le nombre d'occurrences:

ListOfObjects.SelectMany(x => x.arrayOfStrings).GroupBy(x => x).Select(x => new KeyValuePair<string, int>(x.Key, x.Count())) 

ElasticLinq