0

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

我怎样才能做到这一点 ?

4

2 回答 2

2

正如@karin 所说,没有正常的查询方法来执行此操作。

在 2.2 版中,您可以$elemMatch用来投影第一个匹配结果,ExamScores但不能得到多个。

话虽如此,聚合框架可以做到这一点:

db.col.aggregate([
    {$unwind: '$ExamScores'},
    {$match: {'ExamScores.ExamName':"Maths"}},
    {$group: {_id: '$_id', name: '$name', ExamScores: {$push: '$ExamScores'}}}
])

反正是这样的。

于 2013-03-14T08:29:41.483 回答
0

在 MongoDB 查询之前已经问过这个问题,以根据 condition 限制值,唯一的答案说这是不可能的,但是有一个实现它的请求。

于 2013-03-14T05:40:33.490 回答