Mongo DBRef 有什么问题吗?

发布于 2024-11-28 03:17:35 字数 406 浏览 1 评论 0原文

来自 RDMBS 背景的人很难不想到连接之类的想法,尤其是在使用无模式 MongoDB 环境时。

我在 博客 上读到,DBRef 仅在您确实知道您所在的对象类型时才有用参考。

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

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

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

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

Coming from a RDMBS background it's hard not to think of thinkgs like joins, especially when working with the schema-less MongoDB environemnt.

I read on a blog that DBRefs were only useful when you do know the type of object that you're referencing.

Why is this so? Surely they have more use than that.

Say I have a user collection, and an employer collection. Many users can reference the same employer. To me, this is the perfect use of a DBRef. However, this contradicts what I read on that blog.

Sure, I could embed the employer into each user collection, but what happens when the employer changes? Maybe they employer changes address or phone number or something. If the employer is embedded in each user, then I'd have to update every user's embedded document.

That can't be efficient. Or can it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦境 2024-12-05 03:17:35

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

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

DBRefs is a data structure which include a collection name and an object id. If you know the name of you collection (like in your example, employer), you don't need a DBRef. Just store the object id of the employer in your user collection. You save the space taken by the collection name.

Use DBRef when the collection name can change. For example, you have a comment collection. You want to use it to store comments on blog post and on book pages (2 differents collections). If you want to store a reference to the post or the page in your comment, you need to use a database reference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文