MongoDB查询以获取数组值

使用find()连同$elemMatch获取数组值。首先让我们创建一个包含文档的集合-

> db.fetchingArrayValuesDemo.insertOne(
... {
...    "StudentName": "David",
...    "StudentDetails": [
...       {
...          "FatherName": "Bob",
...          "CountryName": "US",
...
...          "Favourite": [
...             {
...                "Teacher": "DAVID",
...                "Subject": [
...                   "MySQL",
...                   "MongoDB",
...                   "Java"
...                ],
...                "Marks": [
...                   50,
...                   60,
...                   65
...                ]
...             }
...          ]
...
...       }
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e06fc3425ddae1f53b621fa")
}
> db.fetchingArrayValuesDemo.insertOne(
...    {
...       "StudentName": "Robert",
...       "StudentDetails": [
...          {
...             "FatherName": "Sam",
...             "CountryName": "AUS",
...
...             "Favourite": [
...                {
...                   "Teacher": "MIKE",
...                   "Subject": [
...                      "Python",
...                      "C",
...                      "C++"
...                   ],
...                   "Marks": [
...                      76,
...                      89,
...                      91
...                   ]
...                }
...             ]
...
...          }
...       ]
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e06fc6825ddae1f53b621fb")
}

以下是在find()方法的帮助下显示集合中所有文档的查询-

> db.fetchingArrayValuesDemo.find();

这将产生以下输出-

{ "_id" : ObjectId("5e06fc3425ddae1f53b621fa"), "StudentName" : "David", "StudentDetails" : [ { "FatherName" : "Bob", "CountryName" : "US", "Favourite" : [ { "Teacher" : "DAVID", "Subject" : [ "MySQL", "MongoDB", "Java" ], "Marks" : [ 50, 60, 65 ] } ] } ] }
{ "_id" : ObjectId("5e06fc6825ddae1f53b621fb"), "StudentName" : "Robert", "StudentDetails" : [ { "FatherName" : "Sam", "CountryName" : "AUS", "Favourite" : [ { "Teacher" : "MIKE", "Subject" : [ "Python", "C", "C++" ], "Marks" : [ 76, 89, 91 ] } ] } ] }

这是获取数组值的查询-

> db.fetchingArrayValuesDemo.find({
...    StudentDetails:{
...       $elemMatch: {
...          Favourite: {
...             $elemMatch: {
...                Teacher: "DAVID"
...             }
...          }
...       }
...    }
... });

这将产生以下输出-

{ "_id" : ObjectId("5e06fc3425ddae1f53b621fa"), "StudentName" : "David", "StudentDetails" : [ { "FatherName" : "Bob", "CountryName" : "US", "Favourite" : [ { "Teacher" : "DAVID", "Subject" : [ "MySQL", "MongoDB", "Java" ], "Marks" : [ 50, 60, 65 ] } ] } ] }