我已经阅读了这篇关于使用官方 go mongo 驱动程序对自定义对象进行编码和解码的友好文章。
有一个很好的例子,如何将它们编组为扩展的 json 格式(bson.MarshalExtJSONWithRegistry)。但我想知道如何将此文档放入集合中InserOne()(然后从中获取)。看看这个伪代码:
// myReg - variable created according to linked article in question.
// WithRegistry do **not** exist in mongo-driver lib is part of pseudocode
mongoCollection := client.Database("db").Collection("coll").WithRegistry(myReg)
// Now InserOne() honor myReg (type *bsoncodec.Registry) when serialize `val` and puting it into mongodb
mongoCollection.InsertOne(context.TODO(), val)
我浏览了 API 文档,发现有Marshaler和Unmarshaler接口,但是通过注册表方式,我可以在不同的集合上以不同的方式(反)序列化相同的类型(例如,从旧格式迁移到新格式时) )。
所以问题是如何*bsoncodec.Registry与集合函数(如InserOne,等)一起使用UpdateOne,FindOne如果不是实现我的目标(自定义(反)序列化)的最惯用方式。
手掌心
相关分类