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

Truy vấn MongoDB với logic NAND (NOT AND)

MongoDB không có toán tử NAND trực tiếp. Để phủ định điều kiện AND phức tạp, dùng $or kết hợp $ne (khác) thay vì $not.

Tạo collection demo266 với 2 trường boolean:

> db.demo266.insertOne({"active1":true,"active2":false});
> db.demo266.insertOne({"active1":true,"active2":true});
> db.demo266.insertOne({"active1":false,"active2":false});
> db.demo266.insertOne({"active1":false,"active2":true});

Yêu cầu: tìm document KHÔNG có (active1=true VÀ active2=true) → tương đương (active1≠true HOẶC active2≠true):

> db.demo266.find({
   $or: [
      {"active1": {"$ne": true}},
      {"active2": {"$ne": true}}
   ]
});

Kết quả loại bỏ document có cả 2 = true:

{
   "_id" : ObjectId("5e480f4b1627c0c63e7dbaa7"),
   "active1" : true,
   "active2" : false
}
{
   "_id" : ObjectId("5e480f561627c0c63e7dbaa9"),
   "active1" : false,
   "active2" : false
}
{
   "_id" : ObjectId("5e480f701627c0c63e7dbaaa"),
   "active1" : false,
   "active2" : true
}