我收集了以下类型的文件(取自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,但我不一定知道数组索引。
谢谢
编辑:我知道我可以简单地遍历数组以找到正确的条目,但我想知道是否有更好的方法。
答案 0 :(得分:0)
不幸的是,在MongoDB中没有直接的方法来进行这种类型的查询。新的$ slice运算符将帮助您限制返回的分数,但显然只有在您知道所需课程的位置时才有用。
我在Mongo Google Group上问了一个类似的问题......
答案 1 :(得分:0)
如果您使用的是2.2版MongoDB,则可以使用'匹配'聚合函数:
有关详细信息,请参阅here。