我有一个MongoDB文档,如下所示
{
"_id":1,
"name":"XYZ"
ExamScores:[
{ExamName:"Maths", UnitTest:1, Score:100},
{ExamName:"Maths", UnitTest:2, Score:80},
{ExamName:"Science", UnitTest:1, Score:90}
]
}
我需要检索此文档,以便它只显示数学数组。如下所示
{
"_id":1,
"name":"XYZ"
ExamScores:[
{ExamName:"Maths", UnitTest:1, Score:100},
{ExamName:"Maths", UnitTest:2, Score:80},
]
}
我该怎么做?
答案 0 :(得分:2)
正如@karin所述,在查询方法中没有,正常的,这样做。
在2.2版中,您可以使用$elemMatch
投影来自ExamScores
的第一个匹配结果,但不能获得多个结果。
话虽这么说,聚合框架可以做到这一点:
db.col.aggregate([
{$unwind: '$ExamScores'},
{$match: {'ExamScores.ExamName':"Maths"}},
{$group: {_id: '$_id', name: '$name', ExamScores: {$push: '$ExamScores'}}}
])
无论如何都是这样的。
答案 1 :(得分:0)
在MongoDB query to limit values based on condition之前已经问过这个问题,那里唯一的答案是说不可能,但是有一个request来实现它。