首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB性能嵌入式文档检索速度

MongoDB性能嵌入式文档检索速度
EN

Stack Overflow用户
提问于 2012-05-28 08:31:33
回答 1查看 1.9K关注 0票数 2

我在徘徊,是什么让MongoDB跑得更快。有几个带有大量嵌入文档数组的父文档,或者有大量的父文档,而内部嵌入的文档很少。

这个问题只涉及查询速度。我不关心重复信息的数量,除非你告诉我这会影响搜索速度。(我不知道MongoDb是否自动索引Id)

示例:

具有以下实体,每个实体只有一个Id字段:

  • 班级(8个不同班级)
  • 学生(100个不同学生)

为了将学生与班级联系起来,如果我:

  • 将所有学生存储在数组中,在每个学生参加
  • 的班级中,我保存了与他们所参加的课程的数组。

这个例子只是一个例子。一个真正的静坐将涉及数千份文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-28 08:54:41

,我要在给定的班级里寻找特定的学生。

如果是这样的话,您应该有一个Student集合,其中的字段设置为该类(只是类id可能比嵌入和复制的类文档更好)。

否则,您将无法正确查询学生:

代码语言:javascript
复制
db.students.find ({ class: 'Math101', gender: 'f' , age: 22 })

将按预期工作,而将学生存储在他们所参加的课程中。

代码语言:javascript
复制
{ _id: 'Math101', student: [
     { name: 'Jim', age: 22 } , { name: 'Mary', age: 23 }
  ] }

除了重复之外,还存在查询的问题

代码语言:javascript
复制
db.classes.find ( { _id: 'Math101', 'student.gender': 'f', 'student.age': 22 })

只要至少有一名女学生和至少一名22岁的学生(可能是男性),就会给你上数学课。

您只能获得主文档的列表,它将包含所有未过滤的嵌入文档,see also this related question

我不知道MongoDb是否自动索引Id

唯一的自动索引是“主”文档的主键_id。嵌入文档的任何_id字段都不会自动编入索引,但您可以手动创建这样的索引。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10781578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档