查询多个嵌套文档的数组

时间:2021-07-27 12:58:24

标签: mongodb mongoose mongodb-query mongoose-schema

我有一个 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"})。但是如果我想找到所有有一个或多个爱好的学生怎么办。假设我想找到所有爱好编程和睡觉的学生。查询应返回所有具有这两种爱好的学生。他们可能有也可能没有其他爱好。感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用 $all

db.Student.find({
  "hobbies.hobbyName": {
    "$all": [
      "Coding",
      "Sleeping"
    ]
  }
})

Mongo playground