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

Lấy đối tượng cụ thể từ mảng đối tượng trong tài liệu MongoDB

Sử dụng positional operator $ trong projection để chỉ trả về phần tử khớp.

Tạo collection

> db.getASpecificObjectDemo.insertOne({
    _id: 1,
    "CustomerName": "Larry",
    "CustomerDetails": {
        "CustomerPurchaseDescription": [
            { "id": 100, "ProductName": "Product-1", "Amount": 10000 },
            { "id": 101, "ProductName": "Product-2", "Amount": 10500 },
            { "id": 102, "ProductName": "Product-3", "Amount": 10200 }
        ]
    }
});
{ "acknowledged": true, "insertedId": 1 }

Hiển thị tài liệu

> db.getASpecificObjectDemo.find().pretty();

Lấy phần tử có id = 101 trong mảng

> db.getASpecificObjectDemo.find(
    { _id: 1, "CustomerDetails.CustomerPurchaseDescription.id": 101 },
    { _id: 0, "CustomerDetails.CustomerPurchaseDescription.$": 1 }
);

Kết quả (chỉ phần tử id=101):

{
    "CustomerDetails": {
        "CustomerPurchaseDescription": [
            { "id": 101, "ProductName": "Product-2", "Amount": 10500 }
        ]
    }
}

Giải thích: Toán tử $ (positional) trong projection đại diện cho phần tử đầu tiên trong mảng khớp điều kiện truy vấn. Chỉ hoạt động khi truy vấn có điều kiện trên trường của mảng đó.