Toán tử $and thực hiện phép AND logic trên mảng các biểu thức. Kết hợp với $gt (greater than) để lọc phức tạp. Tạo collection:
> db.demo680.insertOne({Values:40});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea4461b04263e90dac943fe") }
> db.demo680.insertOne({Values:70});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea4461e04263e90dac943ff") }
> db.demo680.insertOne({Values:[80,30]});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea4462a04263e90dac94400") }
> db.demo680.insertOne({Values:20});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea4463304263e90dac94401") }
Hiển thị dữ liệu (một tài liệu có mảng Values=[80,30]):
> db.demo680.find();
Kết quả:
Tìm tài liệu thỏa MẤT: Values > 60 (
$gt:60) **VÀ** Values chứa 30:> db.demo680.find({$and : [{Values:{$gt:60}}, {Values:30}]})Kết quả khớp tài liệu Values=[80,30] (có 80 > 60 VÀ có phần tử 30):
Giải thích:
{Values:{$gt:60}}- khớp nếu Values là số >60 HOẶC mảng chứa phần tử >60{Values:30}- khớp nếu Values = 30 HOẶC mảng chứa 30$andyêu cầu **CẢ HAI** điều kiện đúng trên cùng một tài liệu
Lưu ý: Với trường mảng, MongoDB so sánh từng phần tử. Tài liệu Values=[80,30] thỏa cả 2: có 80>60 VÀ có phần tử 30. Tài liệu Values=70 chỉ thỏa điều kiện 1.
Cách viết gọn (implicit AND): db.demo680.find({Values: {$gt: 60, $in: [30]}}) - nhưng $in ở đây không đúng ngữ nghĩa, nên dùng $and rõ ràng.