登录
首页 >  Golang >  Go问答

能否把整个布局存储在MongoDB中?

来源:stackoverflow

时间:2024-03-28 19:30:23 183浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《能否把整个布局存储在MongoDB中?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我正在尝试为我的简单项目设置一个数据库。由于在 MongoDB 中你可以保存任何 JSON 文件,我想知道是否有一个简单的解决方案可以直接将结构作为 json 文件保存到 MongoDB?


解决方案


这是在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)
      }
}

好了,本文到此结束,带大家了解了《能否把整个布局存储在MongoDB中?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>