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

Truy vấn mảng lồng nhau bằng nhiều điều kiện trong MongoDB

Để truy vấn mảng lồng nhau với nhiều điều kiện, sử dụng $elemMatch. Tạo collection:

> db.demo203.insertOne({
   "_id" : "101",
   "Name" : "Chris",
   "details1" : [
      {
         "empName" : "David",
         "salary" : "50000",
         "technology" : ["MySQL", "MongoDB"]
      },
      {
         "empName" : "Carol",
         "salary" : "70000",
         "technology" : ["Java", "Spring"]
      }
   ]
});
{ "acknowledged" : true, "insertedId" : "101" }

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

> db.demo203.find();

Kết quả:

Truy vấn với $elemMatch để tìm phần tử thỏa mãn CẢ HAI điều kiện: technology="MySQL" VÀ empName="David":

> db.demo203.find(
   {details1: { $elemMatch: {"technology" : "MySQL", "empName": "David"}}}
).pretty()

Kết quả - trả về toàn bộ tài liệu gốc vì có phần tử khớp:

Điểm quan trọng: $elemMatch đảm bảo cùng một phần tử trong mảng thỏa mãn tất cả điều kiện. Không dùng $elemMatch sẽ khớp nếu các điều kiện nằm ở phần tử khác nhau.