从 RDMBS 的背景来看,很难不想到像连接这样的想法,尤其是在使用无模式的 MongoDB 环境时。
我在 blog 上阅读DBRef 仅在您确实知道所引用的对象类型时才有用。
为什么会这样?当然,它们的用途远不止于此。
假设我有一个用户集合和一个雇主集合。许多用户可以引用同一雇主。对我来说,这是对 DBRef 的完美使用。然而,这与我在该博客上读到的内容相矛盾。
当然,我可以将雇主嵌入到每个用户集合中,但是当雇主发生变化时会发生什么?也许他们的雇主更改了地址或电话号码或其他内容。如果雇主嵌入到每个用户中,那么我就必须更新每个用户的嵌入文档。
那效率不高。或者可以吗?
最佳答案
DBRefs 是一个数据结构,包括一个集合名称和一个对象 ID。如果您知道您收藏的名称(如您的示例中的雇主),则不需要 DBRef。只需将雇主的对象 ID 存储在您的用户集合中。您节省了集合名称占用的空间。
当集合名称可以更改时使用 DBRef。例如,您有一个评论集合。你想用它来存储博客文章和书页(2 个不同的集合)上的评论。如果您想在评论中存储对帖子或页面的引用,则需要使用数据库引用。
关于mongodb - Mongodb DBRefs 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975905/