Olá, terminei o curso de Mongo da Alura e gostaria de aprender mais sobre as consultas do MongoDb (sim, já busquei na documentação e no Google e não identifiquei).
Eu não sei se é possível o mongo tratar essa condição diretamente na consulta, mas eu gostaria que retornasse todos os alunos com a $avg de inglês >= 5 e $avg de Alemão >= 8
db.getCollection('alunos').aggregate([
{
$match: {
$and: [
{
"cursos.materias": {
$elemMatch: {
notas : {
$gte : "5" // Cinco é a média para a matéria de Inglês
},
nome : "Inglês"
}
}
},
{
"cursos.materias": {
$elemMatch: {
notas : {
$gte : "8" // Oito é a média para a matéria de Alemão
},
nome : "Alemão"
}
}
}
]
}
},
{
$project : {
"nome" : "$nome",
}
}
])
// O JSON do aluno é:
{
"nome" : "Bruno",
"cursos" : {
"nome" : "Idiomas",
"materias" : [
{
"nome" : "Inglês",
"notas" : [2,5,6,9]
},
{
"nome" : "Alemão",
"notas" : [3,1,1,2]
}
]
}
}
Obrigado.