1

Aggregate、$unwind、および $group は、クエリが非常に遅くなるため、私の解決策ではありません。db.collection.find() メソッドでレコードを取得しようとしています。

問題は、サブ配列から複数の値が必要なことです。たとえば、次の例では、"type" : "exam"要素と"type" : "quiz"要素を取得したいと考えています。

{
    "_id" : 22,
    "scores" : [
        {
            "type" : "exam",
            "score" : 75.04996547553947
        },
        {
            "type" : "quiz",
            "score" : 10.23046475899236
        },
        {
            "type" : "homework",
            "score" : 96.72520512117761
        },
        {
            "type" : "homework",
            "score" : 6.488940333376703
        }
    ]
}

私は次のようなものを探しています

db.students.find(
// Search criteria
{ '_id': 22 },

// Projection
{ _id: 1, scores: { $elemMatch: { type: 'exam', type: 'quiz' } }}
)

結果は次のようになります

{ "_id": 22, "scores" : [ { "type" : "exam", "type" : "quiz" } ] }  

しかし、これはtype: 'exam'をオーバーライドし、 type: 'quiz'のみを返します。db.find()でこれを行う方法を知っている人はいますか?

4

1 に答える 1