mongodb - Mongodb DBRefs 有什么问题?

标签 mongodb schema-design dbref nosql

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

我在 blog 上阅读DBRef 仅在您确实知道所引用的对象类型时才有用。

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

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

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

那效率不高。或者可以吗?

最佳答案

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

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

关于mongodb - Mongodb DBRefs 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975905/

相关文章:

c# - 保持 JavaScript 和 C# 对象模型之间的一致性

MongoDB 模式设计(嵌套数组与分离集合)

reference - 如何使用 DBRef 查询 mongodb

MongoDB 并将 DBRef 与空间数据一起使用

java - 如何在执行 mongotemplate.save 操作期间获取 mongodb 集合中文档的对象 id?

python - 如何在生产中部署 Bottle Web 应用程序?

hadoop - HBase - 如何在表中嵌套实体两(+)层?

database - 在mongo go驱动程序中使用DBRef

mongodb - 如何在不依赖MongoDB的情况下启动spring-boot应用程序?

node.js - 如何对与本地 mongodb 对话的 Node.js 进行 dockerize