Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tìm kiếm theo trường trong đối tượng lồng nhau (inner class) MongoDB

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ể.