我们正在运行具有多个系统的微服务体系结构,这些系统可以访问MongoDB中的共享集合(是的,可疑的设计,但我们正在过渡之中)
我们试图找到一种方法来跟踪操作日志中的更改是由哪个“用户” /服务(每个微服务使用不同的凭据)实际进行了更改。如果我们在数据库中发现任何无效的更改,这将使查找哪个系统正在调试变得非常容易。
有什么想法吗?
到目前为止,我唯一想出的方法总是必须更改客户端代码,这是我想避免的。
答案 0 :(得分:0)
如果您可以维护一列editors
,以便每个操作都具有一个{ $addToSet: { editors: { by: userId, at: new Date() } } }
,则相应的oplog条目将具有此信息,您可以与访问控制列表进行交叉核对。
注意:您可能必须将插入内容更改为upserts,或者考虑另一种情况:.insert({ ..., editors: [{ by: userId, at: new Date() }] })