2

我有一个名为“myplace”的集合。它具有以下字段:地点名称、纬度、经度、城市、国家。

我想要所有以字母“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 个我的地方,其中 3 个城市名称为“巴吞鲁日”,剩下的有“特里凡得琅,高知”。当我试图让城市以“B”开头时,它会返回“巴吞鲁日”3次。

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

提前致谢

4

2 回答 2

1

您可以使用 Distinct 方法,在 shell 中它看起来像:

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)

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

于 2014-10-29T10:12:08.687 回答