2017-02-22 9 views
0

構造体をJSONにマーシャリングしてからMongoデータベースに挿入しようとしていますが、このエラーが発生するのを避けてください:%!(EXTRA main.Test={575590180 Me})。 。私は何の問題もなく文書を挿入することができた上で働いていたプロジェクトGolang Mongodb%!(EXTRA

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"}) 
} 
+0

@old_mountainこと私はすべてのオブジェクトm MongoDBにJSONを挿入する必要があります。ありがとう! – Soubriquet

答えて

2

Insertは構造体ではなく、json文字列へのポインタを期待ので、この場合には、単に使用します。

err = collection.Insert(&file)