MongoDB 嵌入文档与通过系统用户配置文件的唯一 ObjectId 进行引用
我想编写一个 Web 应用程序,其中大部分部分都依赖于用户配置文件(例如每个人不同的待办事项列表等),并且我喜欢使用 MongoDB。我正在考虑为主配置文件创建大约 10 个嵌入文档,并将与一个用户相关的所有内容保留在他自己的文档中。
我没有看到为 mongodb 使用外键的明确方法,唯一的方法是创建一个具有 ObjectId 类型的字段 to_do_id 例如,但它们在内部完全不相关,只是碰巧具有相同的 Id d 必须查询。
- 顶级文档中嵌入文档类型的数量是否存在限制,这可能会降低性能?
- 你们如何解决拥有一个大多数文档在呈现每个人的视图时都必须关联的中央配置文件的问题?
- 您是否在 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.
- Is there a limit on the number of embedded document types inside a top level document that could degrade performance?
- 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?
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不确定是否存在最好的参考方法的一般经验法则。由于我主要使用 Java 或 Groovy,因此我喜欢返回一个 DBRef 对象。我可以检查此数据类型并使用它来决定如何以通用方式处理引用。
因此,我倾向于使用简单的手动引用来引用同一集合中的不同文档,并使用 DBRef 来引用跨集合。
我希望这有帮助。
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.