我在徘徊,是什么让MongoDB跑得更快。有几个带有大量嵌入文档数组的父文档,或者有大量的父文档,而内部嵌入的文档很少。
这个问题只涉及查询速度。我不关心重复信息的数量,除非你告诉我这会影响搜索速度。(我不知道MongoDb是否自动索引Id)
示例:
具有以下实体,每个实体只有一个Id字段:
为了将学生与班级联系起来,如果我:
这个例子只是一个例子。一个真正的静坐将涉及数千份文件。
发布于 2012-05-28 08:54:41
,我要在给定的班级里寻找特定的学生。
如果是这样的话,您应该有一个Student集合,其中的字段设置为该类(只是类id可能比嵌入和复制的类文档更好)。
否则,您将无法正确查询学生:
db.students.find ({ class: 'Math101', gender: 'f' , age: 22 })将按预期工作,而将学生存储在他们所参加的课程中。
{ _id: 'Math101', student: [
{ name: 'Jim', age: 22 } , { name: 'Mary', age: 23 }
] }除了重复之外,还存在查询的问题
db.classes.find ( { _id: 'Math101', 'student.gender': 'f', 'student.age': 22 })只要至少有一名女学生和至少一名22岁的学生(可能是男性),就会给你上数学课。
您只能获得主文档的列表,它将包含所有未过滤的嵌入文档,see also this related question。
我不知道MongoDb是否自动索引Id
唯一的自动索引是“主”文档的主键_id。嵌入文档的任何_id字段都不会自动编入索引,但您可以手动创建这样的索引。
https://stackoverflow.com/questions/10781578
复制相似问题