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

Truy xuất record MongoDB bằng cách truy vấn tập con của mảng

Để tìm document mà mảng chứa tất cả các phần tử của một tập con (subset) cho trước, bạn sử dụng toán tử $all.

Tạo dữ liệu mẫu

>> db.subsetOfAnArrayDemo.insertOne({"StudentProgrammingSkills": ["Java","MongoDB","MySQL","C++","Data Structure","Algorithm","Python","Oracle","SQL Server"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb9d1e1895c4fd159f80804") }

Hiển thị document:

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

Truy vấn với $all

Tìm document có mảng StudentProgrammingSkills chứa cả "MongoDB" và "MySQL":

> db.subsetOfAnArrayDemo.find({ StudentProgrammingSkills: { $all: [ 'MongoDB', 'MySQL' ] } } ).pretty();

Kết quả:


Đặc điểm của $all:

  • Khớp khi mảng chứa tất cả các giá trị chỉ định (logic AND)
  • Thứ tự phần tử trong mảng không quan trọng
  • Phần tử có thể nằm ở bất kỳ vị trí nào trong mảng
  • Khác với $in (logic OR - khớp nếu chứa ít nhất một giá trị)

Ví dụ so sánh: {tags: {$in: ["A","B"]}} khớp nếu có A HOẶC B; {tags: {$all: ["A","B"]}} khớp chỉ khi có CẢ A VÀ B.