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

Truy vấn NOR trong MongoDB để loại trừ document cụ thể

Toán tử $nor trả về document KHÔNG khớp với bất kỳ điều kiện nào trong mảng điều kiện. Hữu ích để loại trừ nhiều trường hợp cùng lúc.

Dữ liệu mẫu

> db.demo100.insertOne({"Name":"Chris","Age":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d9624b8903cdd865577c0") }
> db.demo100.insertOne({"Name":"David","Age":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d962cb8903cdd865577c1") }
> db.demo100.insertOne({"Name":"Bob","Age":19});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d9634b8903cdd865577c2") }

Truy vấn $nor

Loại trừ: Name="Chris" HOẶC Age=21 HOẶC thiếu trường Name HOẶC thiếu trường Age:

> db.demo100.find({ 
    $nor: [ 
        { Name: "Chris" }, 
        { Name: { $exists: false } }, 
        { Age: 21 }, 
        { Age: { $exists: false } } 
    ] 
});

Kết quả

{ "_id" : ObjectId("5e2d962cb8903cdd865577c1"), "Name" : "David", "Age" : 23 }
{ "_id" : ObjectId("5e2d9634b8903cdd865577c2"), "Name" : "Bob", "Age" : 19 }

Logic $nor: Document được giữ nếu TẤT CẢ điều kiện trong mảng đều FALSE.

  • David: Name≠Chris, Name tồn tại, Age≠21, Age tồn tại → 4 FALSE → Giữ
  • Bob: Name≠Chris, Name tồn tại, Age≠21, Age tồn tại → 4 FALSE → Giữ
  • Chris: Name=Chris (TRUE) → Loại

So sánh: $or (ít nhất 1 TRUE), $and (tất cả TRUE), $nor (tất cả FALSE), $not (phủ định 1 điều kiện).