Toán tử $all chọn tài liệu mà trường mảng chứa tất cả các giá trị chỉ định (thứ tự không quan trọng). Khác với $in (chứa ít nhất một), $all yêu cầu chứa hết.
Dữ liệu mẫu
> db.demo163.insertOne({ "ClientDetails": [{ "ClientName": "Chris" }, { "ClientName": "David" }] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e3686d49e4f06af551997c5") }
> db.demo163.insertOne({ "ClientDetails": [{ "ClientName": "Mike" }, { "ClientName": "Sam" }] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e3686d59e4f06af551997c6") }
> db.demo163.insertOne({ "ClientDetails": [{ "ClientName": "Robert" }, { "ClientName": "Sam" }] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e3686d59e4f06af551997c7") }
Xem dữ liệu
> db.demo163.find();
{ "_id" : ObjectId("5e3686d49e4f06af551997c5"), "ClientDetails" : [ { "ClientName" : "Chris" }, { "ClientName" : "David" } ] }
{ "_id" : ObjectId("5e3686d59e4f06af551997c6"), "ClientDetails" : [ { "ClientName" : "Mike" }, { "ClientName" : "Sam" } ] }
{ "_id" : ObjectId("5e3686d59e4f06af551997c7"), "ClientDetails" : [ { "ClientName" : "Robert" }, { "ClientName" : "Sam" } ] }
Truy vấn: ClientDetails chứa CẢ "Mike" VÀ "Sam"
> db.demo163.find({"ClientDetails": {$all: [{"ClientName": "Mike"}, {"ClientName": "Sam"}]}});
Kết quả
{ "_id" : ObjectId("5e3686d59e4f06af551997c6"), "ClientDetails" : [ { "ClientName" : "Mike" }, { "ClientName" : "Sam" } ] }
Lưu ý: $all hoạt động trên mảng các đối tượng bằng cách so khớp từng điều kiện đối tượng. Tài liệu thứ 3 có "Sam" nhưng thiếu "Mike" nên không khớp. Đối với mảng giá trị đơn giản (string/number), cú pháp: {tags: {$all: ["mongodb", "database"]}}.