我怎样才能从mongodb获得独特的记录?

时间:2014-10-29 09:48:12

标签: mongodb go mongodb-query mgo

我有一个名为' myplace'的集合。它包含以下字段:place_name,纬度,经度,城市,国家。

我想要所有以字母开头的城市" A"。我尝试了以下方法:

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

用于从db:

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

它获得了所有结果。问题在于一些“我的地方”。文档具有相同的城市,因此它返回重复的城市名称。

我们说我有5个座位,3个城市名称和#34; Baton Rouge"并且仍然拥有" Trivandrum,Kochi"。当我试图让这个城市以" B"开始时,它将返回" Baton Rouge" 3次。

如何确保每个city_name都是唯一的?

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以在shell中使用Distinct方法,它将如下所示:

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

Go:

 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 )

答案 1 :(得分:0)

你可以use Distinct

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

..这假设city_name实际上是一个切片。