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

78 *_*ngs 6 mongodb nosql

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

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

  1. 顶级文档中嵌入的文档类型数量是否有限制可能会降低性能?
  2. 你们如何解决大多数文件必须与每个人提出观点有关的中央概要文件的问题?
  3. 您是否在MongoDb中使用半外键并且具有ObjectId类型的字段,这些字段具有其他文档的唯一ID而不是嵌入它们?

我不明白应该采取什么方法.非常感谢你!

dla*_*law 3

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

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

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

我希望这有帮助。