我有一个 mongodb 集合 Student
,如图所示:
[{
"name" : "John",
"age" : 19,
"hobbies" : [
{
"hobbyName" : "Sleeping",
"proficiency": "Expert"
},
{
"hobbyName" : "Coding",
"proficiency": "Beginner"
},
{
"hobbyName": "Googling",
"proficiency": "Expert"
}
]
},
{
"name" : "Michael",
"age" : 22,
"hobbies" : [
{
"hobbyName" : "Eating",
"proficiency": "Expert"
}
]
}]
一个学生可以有很多爱好。对于单一爱好的查询,我可以简单地使用 Student.find({hobbies.hobbyName: "Coding"})
。但是如果我想找到所有有一个或多个爱好的学生怎么办。假设我想找到所有爱好编程和睡觉的学生。查询应返回所有具有这两种爱好的学生。他们可能有也可能没有其他爱好。感谢您的帮助!
答案 0 :(得分:1)
您可以使用 $all
。
db.Student.find({
"hobbies.hobbyName": {
"$all": [
"Coding",
"Sleeping"
]
}
})