2016-11-16 7 views
2

Ich versuche, in einer Datenbank in einem Feld unterschiedliche erste Worte zu bekommen:Erhalten deutliche erste Worte in einem String

db.mycollection.distinct(substr(0, city.indexOf(' ')),{"state":"FirstState"}) 

Aber das obviosly nicht funktioniert, aber vielleicht hilft es, eine Vorstellung darüber zu bekommen, was ich will machen.

Sagen, ich habe zwei Dokumente:

{ 
    "_id": "10280", 
    "city": "FirstCity is great", 
    "state": "FirstState", 
    "pop": 2224 
}, 
{ 
    "_id": "10282", 
    "city": "SecondCity even greater", 
    "state": "FirstState", 
    "pop": 5574 
} 

ich dann erhalten möchten:

["FirstCity","SecondCity"] 

D.h. Erhalten Sie eindeutige Werte von city Feld first word in Array. Gibt es eine Möglichkeit, das zu tun?

Mit freundlichen Grüßen

+0

Ihre Frage ist unklar. Vielleicht werden wir es verstehen, wenn Sie uns ein Beispieldokument mit der erwarteten Ausgabe zeigen können – styvane

+0

@Styvane Bitte sehen Sie die aktualisierte Frage. – user1665355

+0

Es scheint, als ob du es nicht bis zum Mongo 3.3.6 erreichen kannst. Aber die aktuelle stabile Version ist 3.2.10. Sieh das [ähnliche Frage] (http://stackoverflow.com/questions/28282334/mongodb-group-by-field-using-substr) – gzc

Antwort

2

Sie verwenden, um die map() Methode, um die Liste zurückzukehren wie folgt

Mongo Shell:

cities = db.mycollection.distinct("city", {"state" : "FirstState"}).map(function(city){ 
    return city.split(" ")[0]; 
}); 
printjson(cities); 

Beispielausgabe

[ "FirstCity", "SecondCity" ] 
+1

Gute Lösung tnx! – user1665355

+0

Sie haben vielleicht eine Idee, wie Sie auch nur einzigartige Elemente im Array erhalten können? – user1665355