Mongo DBRef的问题是什么?

时间:2011-08-07 21:26:53

标签: mongodb schema-design dbref nosql

来自RDMBS背景,很难不考虑像连接一样的思考,特别是在使用无模式的MongoDB环境时。

我在blog上读到,只有当您知道要引用的对象类型时,DBRef才有用。

为什么会这样?当然,他们有更多的用途。

假设我有一个用户集合和雇主集合。许多用户可以引用同一个雇主。对我来说,这是DBRef的完美使用。但是,这与我在博客上看到的内容相矛盾。

当然,我可以将雇主嵌入到每个用户集合中,但是当雇主改变时会发生什么?也许他们雇主改变地址或电话号码或其他东西。如果雇主嵌入在每个用户中,那么我必须更新每个用户的嵌入文档。

这不可能有效。或者可以吗?

1 个答案:

答案 0 :(得分:10)

DBRefs是一种数据结构,包括集合名称和对象ID。如果您知道您的集合的名称(如您的示例,雇主),则不需要DBRef。只需将雇主的对象ID存储在您的用户集合中。您可以节省集合名称占用的空间。

当集合名称可以更改时使用DBRef。例如,您有一个评论集合。您希望使用它在博客文章和书页(2个不同的集合)上存储评论。如果要在评论中存储对帖子或页面的引用,则需要使用数据库引用。