mongodb - 来自 mongodb for _id 的两种可能的 golang 类型
问题描述
来这里新手。
我用 Go 开始了一个小项目,自学这门语言。它基于我们在 NodeJS 中开发的一个真实世界项目。
它的作用是,使用Mongo Change Events捕获源数据库中所做的更改并将其写入单独的“日志记录”数据库。这是出于审计目的。
因此,对于更改流事件,我有以下结构:
type documentKey struct {
ID primitive.ObjectID `bson:"_id"`
}
type namespace struct {
Db string `bson:"db"`
Coll string `bson:"coll"`
}
type changeEvent struct {
ID primitive.ObjectID `bson:"_id"`
OperationType string `bson:"operationType"`
ClusterTime primitive.Timestamp `bson:"clusterTime"`
FullDocument bson.M `bson:"fullDocument"`
DocumentKey documentKey `bson:"documentKey"`
Ns namespace `bson:"ns"`
UpdateDescription bson.M `bson:"updateDescription"`
}
这里的问题是,在某些集合中,类型DocumentKey
不是primitive.ObjectID
,而是 a string
(更准确地说,是 UUID)。此代码会在对这些集合进行更改时中断。我将如何在该结构中容纳一个字符串和一个 ObjectID?我想我可以使用interface{}
? 但是我将如何去做,然后我如何将这些值返回到“日志记录”数据库中?
我想这也适用于一个更大的问题,如果您知道它可能不是始终如一的特定类型,您将如何保留 mongodb 的类型。
解决方案
推荐阅读
- html - 我应该如何解析和使用网站数据?我正在使用节点 js
- acumatica - 为什么我的 PXSelector 会忽略我选择的内容
- java - 如果两个线程使用不同的监视器,它们可以在同一个对象上执行相同的同步代码块吗?
- javascript - 单击 javascript 中的多个事件
- lua - WoW 插件帮助 - MouseOver 的单位反应
- python-3.x - 如何将授权令牌传递到 Python 请求标头中
- python - 带有 python 和 sklearn 的 jupyter 笔记本。精度分数误差
- r - 根据R中的匹配条件过滤
- powershell - Command Start-Sleep -milliseconds 50
- woocommerce - 在 Woocommerce 的产品级别设置数量步骤