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()でこれを行う方法を知っている人はいますか?