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

Truy vấn MongoDB $pull / $unset với nhiều điều kiện

Sử dụng $pull kết hợp update để xóa phần tử khỏi mảng theo điều kiện. Tạo collection:

> db.demo198.insertOne({"List":{"Values":[10,20,30,30,70,80,90]}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3c224503d395bdc21346df") }
> db.demo198.insertOne({"List":{"Values":[56,978,56,34,23,34]}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3c225403d395bdc21346e0") }
> db.demo198.insertOne({"List":{"Values":[21,12,14,15,34,56]}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3c226603d395bdc21346e1") }

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

> db.demo198.find();

Kết quả:

Xóa tất cả giá trị < 40 khỏi mảng Values trong TẤT CẢ tài liệu (multi: true):

> db.demo198.update(
   {},
   { "$pull": { "List.Values": { "$lt": 40 } } },
   { "multi": true }
);
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })

Kết quả sau khi xóa:

> db.demo198.find();

Giải thích: $pull xóa tất cả phần tử khớp điều kiện trong mảng. $lt: 40 là điều kiện "nhỏ hơn 40". multi: true áp dụng cho nhiều tài liệu.