从RDMBS背景来看,很难不考虑像连接这样的思想,特别是在使用无模式的MongoDB环境时.
我在博客上看到DBRefs仅在您知道您引用的对象类型时才有用.
为什么会这样?当然,他们有更多的用途.
假设我有一个用户集合和一个雇主集合.许多用户可以引用同一个雇主.对我来说,这是DBRef的完美使用.但是,这与我在博客上看到的内容相矛盾.
当然,我可以将雇主嵌入到每个用户集合中,但是当雇主改变时会发生什么?也许他们雇主改变地址或电话号码或其他东西.如果雇主嵌入在每个用户中,那么我必须更新每个用户的嵌入式文档.
那不可能有效.或者可以吗?
DBRefs是一种数据结构,包括集合名称和对象ID.如果您知道您的集合的名称(如您的示例,雇主),则不需要DBRef.只需将雇主的对象ID存储在您的用户集合中.您可以节省集合名称占用的空间.
当集合名称可以更改时,请使用DBRef.例如,您有一个评论集合.您希望使用它在博客文章和书页(2个不同的集合)上存储评论.如果要在评论中存储对帖子或页面的引用,则需要使用数据库引用.