2010-05-23 53 views
4

我在使用MongoDB时遇到了几种需要使用DBRefs的情况。但是,我也想从DBRef本身的引用文档中缓存一些字段。DBRefs是否可以包含其他字段?

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

例如,即使用户文档被引用,我可能想要使用用户名。这将为我提供单一文件方法的所有好处;查询速度更快,无需在我的代码中执行手动解引用。同时允许我在有意义的地方使用引用。

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

最终,如果它被认为是很好的形式存储在我的另外DBREFS领域我想知道?它会破坏什么?每次重写引用时,我会丢失数据吗?像pymongo这样的驱动程序会支持它吗?

回答

3

最终,我想知道如果它被认为是良好的形式来存储额外的字段在我的DBRefs?

单独的“缓存”和“参考”字段可能更清洁......它取决于您的数据是什么样的。

每当参考被重写时我会丢失数据吗?

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

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

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

驱动程序的解引用助手仍然可以工作。帮助者只需使用$ ref和$ id字段执行findOne。

+0

谢谢克里斯蒂娜。我有足够的信心,至少在我的第一个传球尝试这个。关于缓存的字段,有没有这种流行的格式?也许作者vs cache_author或什么? – Soviut 2010-05-24 19:58:24

+0

另外,作为一个便笺,你的博客文章非常好。他们确实帮助我迅速加快了Mongo的速度。 – Soviut 2010-05-24 19:58:43

+0

谢谢!没有我知道的任何标准,对不起。 cache_whatever听起来不错。 – kristina 2010-05-24 22:28:07

相关问题