Để truy xuất các phần tử mảng trong tài liệu MongoDB, chúng ta sử dụng ký pháp dấu chấm (dot notation). Hãy tạo một collection với các tài liệu mẫu:
> db.demo29.insertOne({"StudentDetails":[{"StudentName":"Chris","StudentMarks":58},{"StudentName":"Bob","StudentMarks":69}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e15fcc08f2315c2efc48e6e") }
> db.demo29.insertOne({"StudentDetails":[{"StudentName":"David","StudentMarks":97},{"StudentName":"Carol","StudentMarks":96}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e15fcd38f2315c2efc48e6f") }
Hiển thị tất cả tài liệu từ collection bằng phương thức find():
> db.demo29.find().pretty();
Kết quả trả về:
{
"_id" : ObjectId("5e15fcc08f2315c2efc48e6e"),
"StudentDetails" : [
{ "StudentName" : "Chris", "StudentMarks" : 58 },
{ "StudentName" : "Bob", "StudentMarks" : 69 }
]
}
{
"_id" : ObjectId("5e15fcd38f2315c2efc48e6f"),
"StudentDetails" : [
{ "StudentName" : "David", "StudentMarks" : 97 },
{ "StudentName" : "Carol", "StudentMarks" : 96 }
]
}
Truy vấn để lấy các phần tử mảng bên trong tài liệu MongoDB:
> db.demo29.find({"StudentDetails.StudentName":"David"});
Kết quả:
{
"_id" : ObjectId("5e15fcd38f2315c2efc48e6f"),
"StudentDetails" : [
{ "StudentName" : "David", "StudentMarks" : 97 },
{ "StudentName" : "Carol", "StudentMarks" : 96 }
]
}
Giải thích: Truy vấn sử dụng dot notation StudentDetails.StudentName để lọc các tài liệu có chứa phần tử mảng với StudentName bằng "David". MongoDB sẽ trả về toàn bộ tài liệu phù hợp, bao gồm cả các phần tử khác trong mảng StudentDetails.