如何通过mgo获取未知的mongo doc

时间:2014-09-18 20:38:29

标签: mongodb go mgo

以下是试图从mongodb中获取所有文档的代码段。

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文档?

感谢

1 个答案:

答案 0 :(得分: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
}