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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用于插入或獲取 mongo-driver 文檔的自定義編碼器/解碼器

用于插入或獲取 mongo-driver 文檔的自定義編碼器/解碼器

Go
HUX布斯 2022-07-11 15:34:22
我已經(jīng)閱讀了這篇關(guān)于使用官方 go mongo 驅(qū)動程序?qū)ψ远x對象進(jìn)行編碼和解碼的友好文章。有一個很好的例子,如何將它們編組為擴展的 json 格式(bson.MarshalExtJSONWithRegistry)。但我想知道如何將此文檔放入集合中InserOne()(然后從中獲?。?纯催@個偽代碼:// myReg - variable created according to linked article in question.// WithRegistry do **not** exist in mongo-driver lib is part of pseudocodemongoCollection := client.Database("db").Collection("coll").WithRegistry(myReg)// Now InserOne() honor myReg (type *bsoncodec.Registry) when serialize `val` and puting it into mongodbmongoCollection.InsertOne(context.TODO(), val)我瀏覽了 API 文檔,發(fā)現(xiàn)有Marshaler和Unmarshaler接口,但是通過注冊表方式,我可以在不同的集合上以不同的方式(反)序列化相同的類型(例如,從舊格式遷移到新格式時) )。所以問題是如何*bsoncodec.Registry與集合函數(shù)(如InserOne,等)一起使用UpdateOne,F(xiàn)indOne如果不是實現(xiàn)我的目標(biāo)(自定義(反)序列化)的最慣用方式。
查看完整描述

1 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊

Database.Collection()方法具有“可選”options.CollectionOptions參數(shù),該參數(shù)確實具有設(shè)置bsoncodec.Registry. 如果您使用配置了注冊表的選項獲取您的集合,則該注冊表將用于對該集合執(zhí)行的所有操作。

像這樣使用它:

opts := options.Collection().SetRegistry(myReg)
c := client.Database("db").Collection("coll", opts)

引用我的相關(guān)答案:如何在解組 MongoDB 文檔時忽略空值?

注冊表可以在多個級別設(shè)置/應(yīng)用,甚至可以設(shè)置/應(yīng)用到一個整體mongo.Client,或者一個mongo.Database或只是一個mongo.Collection,當(dāng)獲取它們時,作為它們選項的一部分,例如options.ClientOptions.SetRegistry()。

因此,當(dāng)您不從舊格式遷移到新格式時,您可以將注冊表設(shè)置為“客戶端”級別并“完成”。只要驅(qū)動程序處理您注冊的自定義類型的值,就會應(yīng)用您的注冊表和自定義編碼器/解碼器。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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