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

时间:2011-09-09 18:25:00

标签: mongodb nosql

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

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

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

1 个答案:

答案 0 :(得分:2)

  1. 在性能方面没有特别限制。但是,文档越大,通过电线传输的时间就越长。始终检索整个文档。
  2. 我用引用来做。您可以根据此页面选择简单的手动引用和数据库DBRef:http://www.mongodb.org/display/DOCS/Database+References
  3. 上面的链接记录了如何以半外键方式在文档中引用。 DBRef可能适合您尝试的操作,但简单的手动引用非常有效。
  4. 我不确定哪种参考方法最好的一般经验法则。因为我主要使用Java或Groovy,所以我喜欢返回DBRef对象的事实。我可以检查这个数据类型并使用它来决定如何以通用方式处理引用。

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

    我希望有所帮助。