Để tìm document mà trường mảng chứa **tất cả** các phần tử chỉ định, sử dụng toán tử $all.
Tạo collection
> db.demo642.insertOne({ _id:1, ListOfNames:["Robert","John"] });
> db.demo642.insertOne({ _id:2, ListOfNames:["Robert","Chris"] });
Hiển thị dữ liệu
> db.demo642.find();
Kết quả:
{
"_id" : 1, "ListOfNames" : [ "Robert", "John" ]
}
{
"_id" : 2, "ListOfNames" : [ "Robert", "Chris" ]
}
Tìm document chứa cả "Chris" VÀ "Robert"
> db.demo642.find({
ListOfNames: {
$all: [ "Chris", "Robert" ]
}
})
Kết quả (chỉ _id: 2 thỏa mãn):
{
"_id" : 2, "ListOfNames" : [ "Robert", "Chris" ]
}
Giải thích:
$allyêu cầu mảng phải chứa **tất cả** các giá trị trong mảng điều kiện- Thứ tự không quan trọng:
["Robert","Chris"]khớp$all:["Chris","Robert"] - Khác với
$in(chỉ cần chứa **ít nhất một**) - Có thể kết hợp với
$sizeđể kiểm tra độ dài mảng chính xác
Ví dụ mở rộng: Tìm document có ListOfNames chứa cả 3 tên: {$all: ["Robert", "Chris", "John"]} → không document nào khớp.