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

Truy vấn MongoDB lấy document chứa tất cả phần tử trong mảng ($all)

Để 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:

  • $all yê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.