MongoDB 嵌入式文档与系统用户配置文件的唯一 ObjectIds 引用

标签 mongodb nosql

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

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

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

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

最佳答案

  1. 在性能方面没有特殊限制。但是,文档越大,通过网络传输所需的时间就越长。始终检索整个文档。
  2. 我是通过引用来做的。您可以根据此页面在简单的手动引用和数据库 DBRef 之间进行选择:http://www.mongodb.org/display/DOCS/Database+References
  3. 上面的链接记录了如何以半外键的方式在文档中引用。 DBRef 可能适合您尝试做的事情,但简单的手动引用非常有效。

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

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

希望对你有帮助。

关于MongoDB 嵌入式文档与系统用户配置文件的唯一 ObjectIds 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7365883/

相关文章:

python - 带有 django-rest-framework 的 mongo 支持模型的可浏览 REST api

java - mongodb mongodump json 日期字段解析错误

nosql - 我可以将文档和键值对存储在同一个 DynamoDB 实例中吗?

c# - .ToList().First() 与 .Single for IQueryable 在 c# 中的优势

c# - 在 RavenDb 中使用域模型作为文档?

iphone - 如何手动设置 NSManagedObjectID?

javascript - 使用ejs从mongodb查看获取数据麻烦

node.js - 平均堆栈文件上传

mongodb - 如何$unwind嵌入文档(非列表)

nosql - 如何过滤 Cassandra 中的数据?