我有一个名为“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个myplace,其中3个城市的名称为“巴吞鲁日”,剩下的则是“高知特里凡得琅”。当我尝试以“B”开头的城市时,它会返回“巴吞鲁日” 3次。

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

提前致谢

最佳答案

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

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 )

关于mongodb - 我如何从mongodb获取唯一记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26627101/

10-10 07:39