为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
幕布斯7119047 2021-11-29 19:14:33
我的 json 如下所示,[  {    "key1": 1,    "key2": "val2"  },  {    "key1": 2,    "key2": "val2"  }]这个json采用字符串格式,我希望json数组中的对象作为mongodb中的单个记录插入。我参考了https://labix.org/mgo,但无法在上述用例中找到足够的示例。感谢您在寻找解决方案时的想法。
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

将 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

}


查看完整回答
反对 回复 2021-11-29
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

在这个例子中,我将存储混合数组


测试字符串:= '[[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 main


import (

    "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.Client


func 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)  

}



查看完整回答
反对 回复 2021-11-29
?
偶然的你

TA贡献1841条经验 获得超3个赞

如果您已经有 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)

    } 


查看完整回答
反对 回复 2021-11-29
  • 3 回答
  • 0 关注
  • 682 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信