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

Áp dụng điều kiện subset trong MongoDB Aggregation

Sử dụng $setIsSubset để kiểm tra một mảng có phải subset của mảng khác. Tạo collection:

> db.subsetDemo.insertOne({"StudentName":"Chris","StudentFavouriteSubject":["Java","Python"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e063e49150ee0e76c06a052") }
> db.subsetDemo.insertOne({"StudentName":"Chris","StudentFavouriteSubject":["Java","Python","MySQL"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e063e4f150ee0e76c06a053") }

Hiển thị tài liệu:

> db.subsetDemo.find().pretty();

Aggregation kiểm tra ["MySQL"] có phải subset của StudentFavouriteSubject:

> db.subsetDemo.aggregate([
   { "$project": {
      "_id": 0,
      "StudentName": 1,
      "isMySQL": {
         "$setIsSubset": [ ["MySQL"], "$StudentFavouriteSubject" ]
      }
   }}
]);

Kết quả - true nếu mảng chứa "MySQL":

{ "StudentName" : "Chris", "isMySQL" : false }
{ "StudentName" : "Chris", "isMySQL" : true }

Giải thích: $setIsSubset trả về true nếu mảng thứ 1 là tập con của mảng thứ 2 (tất cả phần tử mảng 1 có trong mảng 2). Thứ tự không quan trọng, trùng lặp được bỏ qua.