2016-11-16 4 views
2

私は、データベース内のフィールドの個別の最初の単語を取得しようと取得:文字列内の個別最初の言葉

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

をしかし、それはobviosly動作しませんが、多分それは私が欲しいものについてのアイデアを得るのに役立ちますする。

は、私は二つの文書があるとしましょう:

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

私はその後、取得したい:

["FirstCity","SecondCity"] 

すなわち、フィールドのfirst wordの別の値をcityの配列で取得します。 これを行う方法はありますか?

よろしく

+0

あなたの質問は不明です。おそらく私たちはあなたが期待される出力をサンプル文書に表示できるかどうかを理解するでしょう。 – styvane

+0

@Styvane更新された質問をご覧ください。 – user1665355

+0

mongoまではそれを達成できないようです。3.3.6。しかし、現在の安定版リリースは3.2.10です。これを参照してください[類似の質問](http://stackoverflow.com/questions/28282334/mongodb-group-by-field-using-substr) – gzc

答えて

2

あなたは

モンゴシェルを以下のようにリストを返すためにmap()メソッドを使用することができます。

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

サンプル出力

[ "FirstCity", "SecondCity" ] 
+1

良いソリューションtnx! – user1665355

+0

配列内のユニークな要素だけを取得する方法についての考え方はありますか? – user1665355

関連する問題