MongoDB的性能。 embedded式文件search速度
我在徘徊保持MongoDB更快。 有一些embedded式文档大数组的父文档,或者有很多embedded式文档的父文档。
这个问题只关心查询速度。 除非您告诉我它影响search速度,否则我不关心重复信息的数量。 (我不知道如果MongoDb自动索引Id的)
例:
具有以下实体,每个实体只有一个Id字段:
- class级(8个不同class级)
- 学生(100个不同的学生)
为了将学生与class级联系起来,如果我:我是否会充分利用MongoDB的速度?
- 将所有学生存储在数组中,在他们参加的课程中
- 在每个学生的内部,我和他们一起上课。
这个例子只是一个例子。 一个真正的sittuation将涉及数以千计的文件。
我将在给定的class级内search特定的学生。
如果是这样,你应该有一个学生集合,一个字段设置为类(只是类ID可能比embedded和重复类文档更好)。
否则,您将无法正确查询学生:
db.students.find ({ class: 'Math101', gender: 'f' , age: 22 })
将按预期工作,而将学生存储在他们所参加的class级中
{ _id: 'Math101', student: [ { name: 'Jim', age: 22 } , { name: 'Mary', age: 23 } ] }
有(除了重复)查询的问题
db.classes.find ( { _id: 'Math101', 'student.gender': 'f', 'student.age': 22 })
只要有至less一名女学生和至less一名22岁的学生(可能是男性),就会给所有学生提供math课程。
你只能得到主文档的列表,并且会包含所有未经过滤的embedded文档, 另请参阅这个相关的问题 。
我不知道如果MongoDb自动索引ID
唯一的自动索引是“主”文档的主键_id
。 embedded文档的任何_id
字段都不会自动编入索引,但可以手动创build这样的索引。