第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

元帥 Go Struct 到 BSON 用于 mongoimport

元帥 Go Struct 到 BSON 用于 mongoimport

Go
吃雞游戲 2022-11-08 14:37:17
我有一塊結(jié)構(gòu),我想將其寫(xiě)入 BSON 文件以執(zhí)行mongoimport.這是我在做什么的粗略想法(使用gopkg.in/mgo.v2/bson):type Item struct {    ID   string `bson:"_id"`    Text string `bson:"text"`}items := []Item{    {        ID: "abc",        Text: "def",    },    {        ID: "uvw",        Text: "xyz",    },}file, err := bson.Marshal(items)if err != nil {    fmt.Printf("Failed to marshal BSON file: '%s'", err.Error())}if err := ioutil.WriteFile("test.bson", file, 0644); err != nil {    fmt.Printf("Failed to write BSON file: '%s'", err.Error())}這會(huì)運(yùn)行并生成文件,但它的格式不正確 - 相反它看起來(lái)像這樣(使用bsondump --pretty test.bson):{    "1": {        "_id": "abc",        "text": "def"    },    "2": {        "_id": "abc",        "text": "def"    }}當(dāng)我認(rèn)為它應(yīng)該看起來(lái)更像:{    "_id": "abc",    "text": "def"{}    "_id": "abc",    "text": "def"}這可以在 Go 中完成嗎?我只想生成一個(gè).bson您希望mongodump命令生成的文件,以便我可以運(yùn)行mongoimport和填充一個(gè)集合。
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊

您需要獨(dú)立的 BSON 文檔,因此請(qǐng)單獨(dú)編組這些項(xiàng)目:


buf := &bytes.Buffer{}

for _, item := range items {

    data, err := bson.Marshal(item)

    if err != nil {

        fmt.Printf("Failed to marshal BSON item: '%v'", err)

    }

    buf.Write(data)

}


if err := ioutil.WriteFile("test.bson", buf.Bytes(), 0644); err != nil {

    fmt.Printf("Failed to write BSON file: '%v'", err)

}

運(yùn)行bsondump --pretty test.bson,輸出將是:


{

        "_id": "abc",

        "text": "def"

}

{

        "_id": "uvw",

        "text": "xyz"

}

2022-02-09T10:23:44.886+0100    2 objects found

請(qǐng)注意,如果您直接寫(xiě)入文件,則不需要緩沖區(qū):


f, err := os.Create("test.bson")

if err != nil {

    log.Panicf("os.Create failed: %v", err)

}

defer f.Close()


for _, item := range items {

    data, err := bson.Marshal(item)

    if err != nil {

        log.Panicf("bson.Marshal failed: %v", err)

    }

    if _, err := f.Write(data); err != nil {

        log.Panicf("f.Write failed: %v", err)

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-11-08
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)