猿问

如何在golang中向mongodb插入一个json对象数组

我的 json 如下所示,


[

  {

    "key1": 1,

    "key2": "val2"

  },

  {

    "key1": 2,

    "key2": "val2"

  }

]

这个json采用字符串格式,我希望json数组中的对象作为mongodb中的单个记录插入。我参考了https://labix.org/mgo,但无法在上述用例中找到足够的示例。感谢您在寻找解决方案时的想法。


幕布斯7119047
浏览 683回答 3
3回答

HUH函数

将 JSON解组到 []interface{}并将结果插入到数据库中。假设它c是一个mgo.Collection并且data是一个包含 JSON 值的 []byte,请使用以下代码:var v []interface{}if err := json.Unmarshal(data, &v); err != nil {   // handle error}if err := c.Insert(v...); err != nil {   // handle error}

翻过高山走不出你

在这个例子中,我将存储混合数组测试字符串:= '[[1,"a","b",2,"000000",[[1,2,3],[1,2,3]],"\"x","[y","'z",[[1,2,3],[1,2,3]]]]'在 mongodb 中作为 json:{datum: [[1,"a","b",2,"000000",[[1,2,3],[1,2,3]],"\"x","[y","'z",[[1,2,3],[1,2,3]]]]}package mainimport (    "strings"    "context"    "encoding/json"    "fmt"    "log"    "net/http"        "go.mongodb.org/mongo-driver/bson"    "go.mongodb.org/mongo-driver/bson/primitive")type datum2 struct {    Datum interface{} `json:datum`}var userCollection = db().Database("goTest").Collection("users") // get collection "users" from db() which returns *mongo.Clientfunc typeinterface2mongo() {            var datum2 datum2_instance    var interfacevalue []interface{}        test_string := `[[1,"a","b",2,"000000",[[1,2,3],[1,2,3]],"\"x","[y","'z",[[1,2,3],[1,2,3]]]]`    if err := json.Unmarshal([]byte(test_string), &interfacevalue); err != nil {        fmt.Println(err)        return    }        fmt.Println(test_string)    fmt.Println(interfacevalue)    datum2_instance.Datum=interfacevalue    userCollection.InsertOne(context.TODO(), datum2_instance)    fmt.Println(datum2_instance)    fmt.Println(datum2_instance.Datum)  }

偶然的你

如果您已经有 json 数据,请从第 2 步开始操作。如果您先有 Xml 数据,则需要使用此包(“github.com/basgys/goxml2json”)转换为 json 格式 type JsonFileResponse struct {    JsonData string        `bson:"JsonData " json:"JsonData"`}step 1: jsonData, err := xml2json.Convert(xml)        if err != nil {            panic("getting error while converting xml to json",err)        }step 2: session need to open by using your mongodb credentials.    collection := session.DB("database name").C("Collection Name")    err = collection.Insert(JsonFileResponse{JsonData :json.String()})    if err != nil {        log.Fatal(err)    } 
随时随地看视频慕课网APP

相关分类

Go
我要回答