5

我在使用 MongoDB 时遇到过几种需要使用 DBRefs 的情况。但是,我还想在 DBRef 本身中缓存引用文档中的一些字段。

{$ref:'user', $id:'10285102912A', username:'Soviut'}

例如,即使引用了用户文档,我也可能希望用户名可用。这将为我提供单一文档方法的所有好处;更快的查询和消除在我的代码中进行手动取消引用的需要。同时允许我在有意义的地方使用参考资料。

这个想法是,当引用的文档被更新(例如,用户更改他们的名字)时,我的业务层可以自动更新引用它的所有文档。

最终,我想知道在我的 DBRefs 上存储其他字段是否被认为是一种好的形式?它会破坏任何东西吗?每次重写引用时我会丢失数据吗?像pymongo这样的驱动会支持吗?

4

1 回答 1

5

最终,我想知道在我的 DBRefs 上存储其他字段是否被认为是一种好的形式?

拥有单独的“缓存”和“参考”字段可能会更干净......这取决于您的数据是什么样的。

每次重写引用时我会丢失数据吗?

你可以,但如果你小心的话。如果要更新 DB ref 子对象,只需确保更新要更新的特定字段,而不是覆盖整个子对象。

请记住,引用只是普通对象。数据库引用是一种标准,而不是特殊类型。

像pymongo这样的驱动会支持吗?

驱动程序的取消引用助手仍然可以工作。助手只是用 $ref 和 $id 字段做一个 findOne 。

于 2010-05-24T11:30:46.173 回答