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

Tìm giá trị trong mảng MongoDB với nhiều điều kiện

Sử dụng $elemMatch kết hợp $gt và $lt để tìm document có phần tử mảng thỏa mãn nhiều điều kiện cùng lúc.

Cú pháp

db.tênCollection.find({trườngMảng: {$elemMatch: {$gt: giáTrịNhỏ, $lt: giáTrịLớn}}})

Ví dụ minh họa

Tạo collection findValueInArrayWithMultipleCriteriaDemo:

> db.findValueInArrayWithMultipleCriteriaDemo.insertOne({"TenSinhVien": "Larry", "DiemSo": [-150, 150]});
> db.findValueInArrayWithMultipleCriteriaDemo.insertOne({"TenSinhVien": "Mike", "DiemSo": [19]});

Tìm document có ít nhất một điểm > -20 VÀ < 20:

> db.findValueInArrayWithMultipleCriteriaDemo.find({DiemSo: {$elemMatch: {$gt: -20, $lt: 20}}}).pretty();

Kết quả:

{ "_id": ObjectId("..."), "TenSinhVien": "Mike", "DiemSo": [19] }

Giải thích: Document của Larry có [-150, 150] - không có phần tử nào thỏa mãn cả hai điều kiện cùng lúc. Document của Mike có [19] - thỏa mãn (-20 < 19 < 20).

Lưu ý: Nếu dùng {DiemSo: {$gt: -20, $lt: 20}} (không có $elemMatch), MongoDB sẽ match nếu CÓ MỘT phần tử > -20 VÀ CÓ MỘT phần tử (có thể khác) < 20.