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

Thêm trường khớp vào kết quả truy vấn MongoDB với $addFields và $filter

Lọc mảng con và giữ lại phần tử khớp điều kiện

Sử dụng $addFields kết hợp $filter để tạo trường mới chỉ chứa các phần tử thỏa mãn điều kiện.

Dữ liệu môn học

> db.demo334.insertOne({
    "Name": "Chris",
    "Age": 21,
    "details": [
        { "Subject": "MySQL", "Score": 78 },
        { "Subject": "MongoDB", "Score": 45 }
    ]
});

Lọc môn có Score >= 70

> db.demo334.aggregate([
    {
        $addFields: {
            details: {
                $filter: {
                    input: '$details',
                    as: 'out',
                    cond: { $gte: ['$$out.Score', 70] }
                }
            }
        }
    }
]);

Kết quả

{
    "_id": ObjectId("..."),
    "Name": "Chris",
    "Age": 21,
    "details": [{ "Subject": "MySQL", "Score": 78 }]
}

Giải thích: $$out tham chiếu đến từng phần tử trong mảng input. $filter trả về mảng mới chỉ chứa phần tử thỏa cond.