Golang Mongodb%!(EXTRA

时间:2017-02-22 19:00:42

标签: mongodb go

我正在尝试将结构编组为JSON,然后将其插入我的Mongo数据库,但继续收到此错误:%!(EXTRA main.Test={575590180 Me})。我究竟做错了什么?我从我工作的另一个项目中完全接受了这个代码,这个项目可以毫无问题地插入文档。

package main

import (
    "utils"
    "hash/fnv"
    "log"
    "gopkg.in/mgo.v2"
    "encoding/json"
)

type Test struct {
    Id   uint32
    Name string
}

func ConnectDB() *mgo.Session {
    session, err := mgo.Dial("localhost:27017")
    if err != nil {
        panic(err)
    }
    return session
}

func SaveMgoDoc(dbName string, collectionName string, file Test) bool {
    session, err := mgo.Dial("localhost:27017")

    if err != nil {
        panic(err)
    }

    defer session.Close()

    fileJson, err := json.Marshal(file)

    if err != nil {
        log.Printf("failed to marshal struct to json...\n", file)
        return false
    }

    collection := session.DB(dbName).C(collectionName)
    err         = collection.Insert(&fileJson)

    if err != nil {
        log.Printf("failed to insert doc into database...\n", file)
        return false
    }

    return true
}

func hash(s string) uint32 {
        h := fnv.New32a()
        h.Write([]byte(s))
        return h.Sum32()
}

func main() {
    utils.SaveMgoDoc("mydb", "mydoc", Test{hash("Me"), "Me"})
}

1 个答案:

答案 0 :(得分:2)

Insert需要指向结构的指针,而不是json字符串。所以,在这种情况下,只需使用:

err = collection.Insert(&file)