4

来自 RDMBS 背景,很难不去想像连接这样的想法,尤其是在使用无模式 MongoDB 环境时。

我在博客上读到 DBRefs 只有在您知道所引用对象的类型时才有用。

为什么会这样?当然,它们的用途不止于此。

假设我有一个用户收藏和一个雇主收藏。许多用户可以参考同一个雇主。对我来说,这是对 DBRef 的完美使用。但是,这与我在该博客上阅读的内容相矛盾。

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

那不可能是有效的。或者可以吗?

4

1 回答 1

10

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

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

于 2011-08-08T07:09:18.927 回答