Aggregate, $ unwind и $ group не являются моим решением, поскольку они делают запрос очень медленным, поэтому я хочу получить свою запись с помощью метода db.collection.find ().
Проблема в том, что мне нужно более одного значения из подмассива. Например, из следующего примера я хочу получить элементы "тип": "экзамен" и "тип": "викторина".
{
"_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" } ] }
Но это отменяет тип: 'экзамен' и возвращает только тип: 'викторина'. Кто-нибудь знает, как это сделать с помощью db.find ()?