在mongodb中的特定文档内搜索数组

时间:2010-08-05 19:51:02

标签: mongodb

我收集了以下类型的文件(取自Mongo DB Docs: Schema Design以便熟悉):

db.students
{ name: 'Jane',
  scores: [
              { course: 'math', grade: 'A'},
              { course: 'biology', grade: 'B'},
              { course: 'english', grade: 'C'}
          ]
}

如果我已经拥有Jane的文档,那么检索她的成绩的最佳方式是什么?数学?

我在文档中找到的唯一指导就是找到所有A级数学学生,但在这种情况下,我已经有了我想要查询的学生文档。

我看到访问数组的唯一方法是通过数组索引,例如得分[0] .grade,但我不一定知道数组索引。

谢谢

编辑:我知道我可以简单地遍历数组以找到正确的条目,但我想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:0)

不幸的是,在MongoDB中没有直接的方法来进行这种类型的查询。新的$ slice运算符将帮助您限制返回的分数,但显然只有在您知道所需课程的位置时才有用。

我在Mongo Google Group上问了一个类似的问题......

http://groups.google.com/group/mongodb-user/browse_thread/thread/ec7144cf03d8e724/d09f5b8eb9d6a990?lnk=gst&q=%24slice#d09f5b8eb9d6a990

答案 1 :(得分:0)

如果您使用的是2.2版MongoDB,则可以使用'匹配'聚合函数:

有关详细信息,请参阅here