使用需要使用DBRefs的MongoDB时遇到过几种情况。但是,我还想在DBRef本身中缓存引用文档中的一些字段。
{$ref:'user', $id:'10285102912A', username:'Soviut'}
例如,即使引用了用户文档,我也可能希望用户名可用。这将为我提供单一文件方法的所有好处;更快速查询并消除了在我的代码中进行手动解除引用的需要。同时允许我在有意义的地方使用参考文献。
我的业务层可以自动更新引用它的所有文档。
最终,我想知道在我的DBRefs上存储其他字段是否被认为是好的形式?会破坏什么吗?每次重写引用时,我都会丢失数据吗?像pymongo这样的司机会支持吗?
答案 0 :(得分:4)
最终,我想知道在我的DBRefs上存储其他字段是否被认为是好的形式?
单独的“缓存”和“参考”字段可能更清晰......这取决于您的数据是什么样的。
每次重写引用时,我都会丢失数据吗?
你可以,但如果你小心的话就不行。如果要更新DB ref子对象,只需确保更新要更新的特定字段,而不是覆盖整个子对象。
请记住引用,因为它们只是普通对象。数据库引用是标准,而不是特殊类型。
像pymongo这样的司机会支持吗?
驱动程序的解除引用帮助程序仍然有效。帮助者只需使用$ ref和$ id字段执行findOne。