2014-09-18 88 views
0

以下是試圖從mongodb獲取所有文檔的代碼片段。如何通過mgo獲取未知的mongo文檔

func fetchAll(db *mgo.Database) map[string]interface { 
    var msg map[string]interface{} 
    err := db.C("msg").Find(nil).All(&msg) 
    if err != nil { 
     panic(err) 
    } 
    return msg 
} 

我得到了錯誤:語法錯誤:意外VAR

這裏有什麼問題?是否有更好的方法通過mgo獲取任意mongo文檔?

感謝

回答

4

首先,修正語法錯誤:

func fetchAll(db *mgo.Database) map[string]interface{} { 
    var msg map[string]interface{} 
    err := db.C("msg").Find(nil).All(&msg) 
    if err != nil { 
     panic(err) 
    } 
    return msg 
} 

注意{}在函數的返回類型聲明。

但還有更多。 All()從結果集中檢索所有文檔到一個切片。更改返回類型的地圖切片:

func fetchAll(db *mgo.Database) []map[string]interface{} { 
    var msgs []map[string]interface{} 
    err := db.C("msg").Find(nil).All(&msgs) 
    if err != nil { 
     panic(err) 
    } 
    return msgs 
} 

雖然我們在這,讓我們回到了錯誤,而不是恐慌的。

func fetchAll(db *mgo.Database) ([]map[string]interface{}, error) { 
    var msgs []map[string]interface{} 
    err := db.C("msg").Find(nil).All(&msgs) 
    return msgs, err 
} 
相關問題