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}
]
}

Maths Array のみを表示するように、このドキュメントを取得する必要があります。次のように

{
    "_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 クエリの前に、条件に基づいて値を制限するように求められています。唯一の答えは、それは不可能であると言っていますが、それを実装する要求があるというものです。

于 2013-03-14T05:40:33.490 に答える