查询嵌套文档数组的多个值

Querying array of nested documents for more than one value

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

您可以使用 $all.

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

Mongo playground