0

这是一段试图从 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
}

我收到错误:语法错误:意外的变量

这里有什么问题?有没有更好的方法来通过 mgo 获取任意 mongo 文档?

谢谢

4

1 回答 1

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
}
于 2014-09-18T20:52:12.887 回答