在MongoDB中检索文档数组

时间:2013-03-14 05:33:43

标签: mongodb mongo-java

我有一个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},        
    ]
    }

我该怎么做?

2 个答案:

答案 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来实现它。