Có thể kết hợp NOT và AND trong MongoDB. Theo logic De Morgan: NOT X AND NOT Y = NOT (X AND Y) tương đương NOT X OR NOT Y.
Ví dụ: Collection NotAndDemo:
> db.NotAndDemo.insertOne({"StudentName":"John","StudentCountryName":"US"});
> db.NotAndDemo.insertOne({"StudentName":"John","StudentCountryName":"UK"});
> db.NotAndDemo.insertOne({"StudentName":"David","StudentCountryName":"AUS"});
> db.NotAndDemo.insertOne({"StudentName":"Chris","StudentCountryName":"UK"});
> db.NotAndDemo.insertOne({"StudentName":"Chris","StudentCountryName":"US"});
Truy vấn: NOT (StudentName = "Chris" AND StudentCountryName = "US") - tức là loại bỏ tài liệu thỏa mãn CẢ HAI điều kiện.
Cách viết với $or (áp dụng De Morgan):
> db.NotAndDemo.find({
$or: [
{"StudentName": { $ne: "Chris" }},
{"StudentCountryName": { $ne: "US" }}
]
}).pretty();
Kết quả (loại bỏ bản ghi Chris-US):
{ "StudentName" : "John", "StudentCountryName" : "US" }
{ "StudentName" : "John", "StudentCountryName" : "UK" }
{ "StudentName" : "David", "StudentCountryName" : "AUS" }
{ "StudentName" : "Chris", "StudentCountryName" : "UK" }
Giải thích: $or với các điều kiện $ne thực hiện logic "NOT X OR NOT Y", tương đương "NOT (X AND Y)".