0

我们正在运行一个微服务架构,其中多个系统可以访问 MongoDB 中的共享集合(是的,有问题的设计,但我们正在过渡以摆脱这种情况。)

我们试图找到一种方法来跟踪 oplog 中的哪些更改是由哪个“用户”/服务(每个微服务使用不同的凭据)实际进行了此更改。如果我们在我们的数据库中发现任何无效更改,这将非常容易找出哪个系统出了问题。

有任何想法吗?

到目前为止,我唯一想到的总是必须更改客户端代码,我想避免这种情况。

4

1 回答 1

0

如果您可以维护一个列editors,以便每个操作都有一个{ $addToSet: { editors: { by: userId, at: new Date() } } },那么相应的 oplog 条目将具有此信息,您可以与您的访问控制列表进行交叉检查。

注意:您可能必须将插入更改为 upsert,或考虑另一种情况:.insert({ ..., editors: [{ by: userId, at: new Date() }] })

于 2019-05-28T18:27:52.063 回答