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

是否可以将整个结构保存到 MongoDB?

是否可以将整个结构保存到 MongoDB?

Go
慕的地6264312 2022-05-18 16:29:51
我正在尝试为我的简单项目建立一个数据库。由于在 MongoDB 中您可以保存任何 JSON 文件,我想知道是否有一种简单的解决方案可以将结构直接保存到 MongoDB 作为 json 文件?
查看完整描述

1 回答

?
泛舟湖上清波郎朗

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

这是在MongoDB数据库中存储结构类型数据的示例代码


要从 mongodb 获取 JSON 格式的数据,您可以使用 json.Marshal() 方法


package main


import (

    "context"

    "fmt"

    "log"

    "io/ioutil"


    "go.mongodb.org/mongo-driver/bson"

    "go.mongodb.org/mongo-driver/mongo"

    "go.mongodb.org/mongo-driver/mongo/options"

)


type Person struct {

    ID int `json:"_id"`

    Age  int    `json:"Age"`

    City string `json:"city"`

}


func main() {

    clientOptions := options.Client().ApplyURI("mongodb://127.0.0.1:27017")

    client, err := mongo.Connect(context.TODO(), clientOptions)


    if err != nil {

        log.Fatal(err)

    }


    ctx, _ := context.WithTimeout(context.Background(), 3*time.Second)   

    fmt.Println("Connected to MongoDB!")

    collection := client.Database("db_name").Collection("collection_name")

    byteValues, err := ioutil.ReadFile("docs.json")

    if err != nil {

          fmt.Println("ioutil.ReadFile ERROR:", err)

    } else {

          fmt.Println("ioutil.ReadFile byteValues TYPE:", reflect.TypeOf(byteValues))

          fmt.Println("byteValues:", byteValues, "n")

          fmt.Println("byteValues:", string(byteValues))

    }

    for i := range docs {

           doc := docs[i]

           fmt.Println("ndoc _id:", doc.ID)

           fmt.Println("doc Field Str:", doc.ID)

           result, insertErr := col.InsertOne(ctx, doc)

           if insertErr != nil {

                  fmt.Println("InsertOne ERROR:", insertErr)

           } else {

           fmt.Println("InsertOne() API result:", result)

      }

}


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

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