2014-10-31 28 views
6

我試圖從我的集合中檢索具有唯一標識的文檔。如何在使用golang的mongodb中獲取不同的值

我有一個字段集合:名稱,年齡,城市和排名。我想使用golang從mongodb獲得'city'結果。

我的結構代碼

type exp struct { 
    name string `bson:"name"` 
    age int `bson:"age"` 
    city string `bson:"city"` 
    rank int `bson:"rank"` 
} 

用下面的代碼從MongoDB的檢索結果:

var result []exp //my struct type 

err = coll.Find(bson.M{"City":bson.M{}}).Distinct("City",&result) 

fmt.Println(result) 

有了這個代碼,我得到一個空數組作爲結果。我將如何獲得所有的城市?

回答

6

試試這個代碼

var result []string 

err = c.Find(nil).Distinct("city", &result) 

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

fmt.Println(result) 
2

由於反射限制,mgo(以及encoding/json和其他類似包)無法使用未導出的字段來編組或解組數據。你需要做的是通過首字母大寫,以導出字段:

type exp struct { 
    Name string `bson:"name"` 
    Age int `bson:"age"` 
    City string `bson:"city"` 
    Rank int `bson:"rank"` 
} 

旁註:你不需要指定BSON標籤,如果所需的名稱是一樣的小寫字段名。該documentation for bson狀態:

小寫的字段名用作每個導出場, 的關鍵,但這種行爲可以使用相應的字段標識進行更改。

編輯:

我才意識到你沒有得到一個空片而不是片空場結構。那麼我的回答並不是問題的實際答案,但它仍然是一個需要考慮的問題。

相關問題