MongoDB 嵌入文档与通过系统用户配置文件的唯一 ObjectId 进行引用

发布于 2024-12-04 05:40:19 字数 442 浏览 1 评论 0原文

我想编写一个 Web 应用程序,其中大部分部分都依赖于用户配置文件(例如每个人不同的待办事项列表等),并且我喜欢使用 MongoDB。我正在考虑为主配置文件创建大约 10 个嵌入文档,并将与一个用户相关的所有内容保留在他自己的文档中。

我没有看到为 mongodb 使用外键的明确方法,唯一的方法是创建一个具有 ObjectId 类型的字段 to_do_id 例如,但它们在内部完全不相关,只是碰巧具有相同的 Id d 必须查询。

  1. 顶级文档中嵌入文档类型的数量是否存在限制,这可能会降低性能?
  2. 你们如何解决拥有一个大多数文档在呈现每个人的视图时都必须关联的中央配置文件的问题?
  3. 您是否在 MongoDb 中使用半外键,并且具有具有 ObjectId 类型的字段,这些字段将具有其他文档的唯一 ID,而不是嵌入它们?

我不知道什么时候应该采取什么方法。非常感谢!

I'd like to code a web app where most of the sections are dependent on the user profile (for example different to-do lists per person etc) and I'd love to use MongoDB. I was thinking of creating about 10 embedabble documents for the main profile document and keep everything related to one user inside his own document.

I don't see a clear way of using foreign keys for mongodb, the only way would be to create a field to_do_id with the type of ObjectId for example, but they would be totally unrelated internally, just happen to have the same Ids I'd have to query for.

  1. Is there a limit on the number of embedded document types inside a top level document that could degrade performance?
  2. How do you guys solve the issue of having a central profile document that most of the documents have to relate to in presenting a view per person?
  3. Do you use semi foreign keys inside MongoDb and have fields with ObjectId types that would have some other document's unique Id instead of embedding them?

I cannot feel what approach should be taken when. Thank you very much!

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

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

发布评论

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

评论(1

千纸鹤 2024-12-11 05:40:19
  1. 对于性能没有特殊限制。然而,文档越大,通过网络传输所需的时间就越长。始终检索整个文档。
  2. 我是用参考资料来做的。您可以按照以下页面在简单的手动引用和数据库 DBRef 之间进行选择: http://www .mongodb.org/display/DOCS/Database+References
  3. 上面的链接记录了如何以半外键方式在文档中包含引用。 DBRef 可能适合您尝试执行的操作,但简单的手动参考非常有效。

我不确定是否存在最好的参考方法的一般经验法则。由于我主要使用 Java 或 Groovy,因此我喜欢返回一个 DBRef 对象。我可以检查此数据类型并使用它来决定如何以通用方式处理引用。

因此,我倾向于使用简单的手动引用来引用同一集合中的不同文档,并使用 DBRef 来引用跨集合。

我希望这有帮助。

  1. There is no special limit with respect to performance. The larger the document, though, the longer it takes to transmit over the wire. The whole document is always retrieved.
  2. I do it with references. You can choose between simple manual references and the database DBRef as per this page: http://www.mongodb.org/display/DOCS/Database+References
  3. The link above documents how to have references in a document in a semi-foreign key way. The DBRef might be good for what you are trying to do, but the simple manual reference is very efficient.

I am not sure a general rule of thumb exists for which reference approach is best. Since I use Java or Groovy mostly, I like the fact that I get a DBRef object returned. I can check for this datatype and use that to decide how to handle the reference in a generic way.

So I tend to use a simple manual reference for references to different documents in the same collection, and a DBRef for references across collections.

I hope that helps.

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