Sử dụng ký pháp dấu chấm (dot notation) để truy cập trường trong đối tượng lồng nhau. Tạo collection:
> db.searchInInnerDemo.insertOne(
{
"StudentFirstName": "Robert",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MongoDB",
"StudentLanguage": "Java"
}
}
);
{ "acknowledged": true, "insertedId": ObjectId("5cd2dd89b64f4b851c3a13d2") }
> db.searchInInnerDemo.insertOne(
{
"StudentFirstName": "David",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MySQL",
"StudentLanguage": "PHP"
}
}
);
{ "acknowledged": true, "insertedId": ObjectId("5cd2dda3b64f4b851c3a13d3") }
Hiển thị tất cả
> db.searchInInnerDemo.find().pretty();
Trường hợp 1: Khớp một thuộc tính lồng nhau
> db.searchInInnerDemo.find({"StudentTechnicalDetails.StudentBackEndTechnology": "MongoDB"}).pretty();
Kết quả:
{
"_id": ObjectId("5cd2dd89b64f4b851c3a13d2"),
"StudentFirstName": "Robert",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MongoDB",
"StudentLanguage": "Java"
}
}
Trường hợp 2: Khớp toàn bộ đối tượng lồng nhau
> db.searchInInnerDemo.find({"StudentTechnicalDetails": {"StudentBackEndTechnology": "MongoDB", "StudentLanguage": "Java"}}).pretty();
Kết quả (yêu cầu khớp chính xác cả hai trường):
{
"_id": ObjectId("5cd2dd89b64f4b851c3a13d2"),
"StudentFirstName": "Robert",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MongoDB",
"StudentLanguage": "Java"
}
}
Lưu ý: Trường hợp 2 yêu cầu thứ tự và toàn bộ cấu trúc khớp chính xác. Trường hợp 1 linh hoạt hơn, chỉ kiểm tra một trường cụ thể.