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:
$elemMatchbên ngoài: match phần tử của mảngKyNang(là mảng con)$elemMatchbê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.