面试题答案
一键面试假设students
集合文档结构类似如下:
{
"name": "张三",
"age": 23,
"scores": [
{ "course": "math", "score": 80 },
{ "course": "english", "score": 78 }
]
}
MongoDB查询语句如下:
db.students.find({
age: { $gte: 22, $lte: 25 },
scores: {
$elemMatch: { score: { $gt: 75 } },
$size: { $gte: 2 }
}
});
关键部分作用解释:
age: { $gte: 22, $lte: 25 }
:$gte
表示大于等于,$lte
表示小于等于。此部分用于筛选出年龄在22到25岁之间(包含22和25)的学生。
scores: { $elemMatch: { score: { $gt: 75 } }, $size: { $gte: 2 } }
:$elemMatch: { score: { $gt: 75 } }
:$elemMatch
操作符用于匹配数组中的元素。这里表示在scores
数组中,至少有一个元素满足score
大于75分。
$size: { $gte: 2 }
:$size
操作符用于匹配数组的大小。这里表示scores
数组的大小(即课程数量)大于等于2,确保至少有两门课程。
这样就可以查询出年龄在22到25岁之间,并且至少有两门不同课程成绩都大于75分的学生文档。