2017-08-21 1 views
0

sagen, dass ich eine Datenbank, die die Elemente enthält, wie:Elasticsearch - zählen Vorkommen von (unvorhersehbar) Strings in Array

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

Die Saiten in den ‚arrayOfStrings‘ sind zufällig und unbekannt bei Suchzeit. wie kann ich abfragen, um die Anzahl aller einzigartigen Elemente unter ‚arrayOfStrings‘ wie:

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

Dank!

Antwort

0

Sie können LINQ verwenden, um alle Unterlisten in einer abzuflachen, dann die Gruppe von Schlüssel und die Anzahl der Vorkommen zählen:

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

ElasticLinq

Verwandte Themen