所有嵌入文档/子文档上的MongoDB$elemMatch

所有嵌入文档/子文档上的MongoDB$elemMatch,mongodb,mongoose,Mongodb,Mongoose,我有以下学生收藏: [ { 绰号:“哈菲兹”, 课程:[ {姓名:'物理',分数:5}, {姓名:'数学',分数:10} ] }, { 昵称:“娜达”, 课程:[ {姓名:'物理',分数:8}, {姓名:'数学',分数:9} ] }, { 绰号:“山姆”, 课程:[ {姓名:'物理',分数:6}, {姓名:'数学',分数:10} ] } ] 我正在努力让所有班级中得分至少7分的学生参加 下面的筛选器为我提供了所有文档,因为它们在某些类中都得了7分。我只想在他们在所有课程中得分为7分的情况下找到

我有以下学生收藏:

[
{
绰号:“哈菲兹”,
课程:[
{姓名:'物理',分数:5},
{姓名:'数学',分数:10}
]
},
{
昵称:“娜达”,
课程:[
{姓名:'物理',分数:8},
{姓名:'数学',分数:9}
]
},
{
绰号:“山姆”,
课程:[
{姓名:'物理',分数:6},
{姓名:'数学',分数:10}
]
}
]
我正在努力让所有班级中得分至少7分的学生参加

下面的筛选器为我提供了所有文档,因为它们在某些类中都得了7分。我只想在他们在所有课程中得分为7分的情况下找到他们

Student.find({'classes.score':{$gte:7}});//错误地查找所有学生。

我找到的解决方案是反转条件并执行
$not

下面是这样说的:给我找一个在任何班级中得分不低于7分的学生,这相当于“给我找所有在所有班级中得分高于7分的学生”

Student.find({
“班级。分数”:{
$not:{
$lt:7
}
}
});//只正确记录'Nada`
诚然,这篇文章的可读性很难理解,你常常不得不向你的同龄人解释你为什么要这样做,但我找不到任何其他方法来实现我想要实现的目标

这里有一个mongo游乐场可以玩这个: