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

MongoDB: Kết hợp $in và $nin để lọc mảng có chứa giá trị này nhưng không chứa giá trị kia

Để tìm document có mảng Subjects chứa "MongoDB" nhưng KHÔNG chứa "Java", dùng $and kết hợp $in và $nin.

Tạo collection demo140:

> db.demo140.insertOne({"Id":101,"Subjects":["MongoDB","MySQL"]});
> db.demo140.insertOne({"Id":102,"Subjects":["MongoDB","Java"]});
> db.demo140.insertOne({"Id":103,"Subjects":["MongoDB","PL/SQL"]});
> db.demo140.insertOne({"Id":104,"Subjects":["MongoDB","SQL Server"]});
> db.demo140.insertOne({"Id":105,"Subjects":["C","C++"]});

Truy vấn: Subjects có "MongoDB" ($in) VÀ không có "Java" ($nin):

> db.demo140.find({
   $and: [
      {Subjects: {$in: ['MongoDB']}},
      {Subjects: {$nin: ['Java']}}
   ]
}).toArray();

Kết quả loại bỏ Id=102 (có Java):

[
   {"_id":..., "Id":101, "Subjects":["MongoDB","MySQL"]},
   {"_id":..., "Id":103, "Subjects":["MongoDB","PL/SQL"]},
   {"_id":..., "Id":104, "Subjects":["MongoDB","SQL Server"]}
]