2

「myplace」という名前のコレクションがあります。次のフィールドがあります: place_name、緯度、経度、都市、国。

文字「A」で始まるすべての都市が必要です。私は次のことを試しました:

type Place struct{
    City string `bson: "City"`
}

データベースから結果を取得する場合:

var city_name []Place
err = coll.Find(bson.M{"city": bson.M{"$regex":"^a", "$options":"si"}}).All(&city_name)

すべての結果を取得しています。問題は、一部の「myplace」ドキュメントに同じ都市が含まれているため、重複した都市名が返されることです。

5 つの myplaces があり、3 つの都市名が "Baton Rouge" で、残りが "Trivandrum, Kochi" であるとします。「B」から始まる都市を取得しようとすると、「バトン ルージュ」が 3 回返ってきます。

各 city_name が一意であることを確認するにはどうすればよいですか?

前もって感謝します

4

2 に答える 2

1

Distinct メソッドを使用できます。シェルでは次のようになります。

db.foo.distinct( "city",  { "city" : { "$regex" : /^A/i    } }  );

囲碁:

 var result []string 

 err = c.Find( bson.M{"city": bson.M{"$regex":"^a","$options":"si"}}  ).Distinct("city", &result) 

 if err != nil {
        log.Fatal(err) 
 }

 fmt.Println( result )
于 2014-10-29T10:19:27.113 に答える
0

Distinct を使用できます:

err = coll.Find(bson.M{"city": bson.M{"$regex":"^a", "$options":"si"}}).Distinct("city", &city_name)

city_name..これは、実際にはスライスであると想定しています。

于 2014-10-29T10:12:08.687 に答える