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

Truy vấn mảng của mảng trong MongoDB

Sử dụng $elemMatch lồng nhau để truy vấn mảng hai chiều (array of arrays).

Ví dụ minh họa

Tạo collection arrayOfArraysDemo:

> db.arrayOfArraysDemo.insertOne({"TenNhanVien": "Larry", "KyNang": [["Java", "MongoDB", "MySQL", "SQL Server"]]});
> db.arrayOfArraysDemo.insertOne({"TenNhanVien": "Mike", "KyNang": [["C", "C++"]]});

Cấu trúc: KyNang là mảng chứa 1 mảng con (2 cấp).

Tìm nhân viên có kỹ năng "MongoDB"

> db.arrayOfArraysDemo.find({'KyNang': {$elemMatch: {$elemMatch: {$in: ['MongoDB']}}}}).pretty();

Kết quả: Chỉ Larry (có "MongoDB" trong mảng con).

Giải thích:

  • $elemMatch bên ngoài: match phần tử của mảng KyNang (là mảng con)
  • $elemMatch bên trong: match phần tử của mảng con
  • $in: ['MongoDB']: kiểm tra mảng con chứa "MongoDB"

Lưu ý: Cấu trúc mảng lồng nhau phức tạp cho query. Cân nhắc flatten hoặc restructure schema nếu truy vấn phức tạp thường xuyên.