MongoDB cho phép truy vấn các phần tử trong mảng theo chỉ số (index) cụ thể bằng cách sử dụng dot notation với số chỉ số. Điều này rất hữu ích khi cần kiểm tra giá trị tại vị trí xác định trong mảng.
Tạo dữ liệu mẫu
> db.containsTrueValueDemo.insertOne({"IsMarried":[true,false,true,true,true,true,false,true,false,false,true]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd5039c2cba06f46efe9ef5") }
Xem dữ liệu
> db.containsTrueValueDemo.find().pretty();
{
"_id" : ObjectId("5cd5039c2cba06f46efe9ef5"),
"IsMarried" : [
true, false, true, true, true, true, false, true, false, false, true
]
}
Truy vấn giá trị true tại chỉ số cụ thể
Kiểm tra phần tử tại chỉ số 2 (phần tử thứ 3, vì chỉ số bắt đầu từ 0):
> db.containsTrueValueDemo.find({'IsMarried.2' : true});
{
"_id" : ObjectId("5cd5039c2cba06f46efe9ef5"),
"IsMarried" : [ true, false, true, true, true, true, false, true, false, false, true ]
}
Kết hợp nhiều điều kiện với $and
Kiểm tra cả chỉ số 0 VÀ chỉ số 2 đều là true:
> db.containsTrueValueDemo.find({
$and : [
{'IsMarried.0' : true},
{'IsMarried.2' : true}
]
});
{
"_id" : ObjectId("5cd5039c2cba06f46efe9ef5"),
"IsMarried" : [ true, false, true, true, true, true, false, true, false, false, true ]
}
Giải thích
'IsMarried.2'truy cập phần tử tại chỉ số 2 của mảng- Chỉ số mảng trong MongoDB bắt đầu từ 0
- Toán tử
$andkết hợp nhiều điều kiện (tất cả phải đúng) - Kỹ thuật này áp dụng cho mọi kiểu dữ liệu trong mảng, không chỉ boolean
Ứng dụng thực tế
Có thể dùng để: kiểm tra trạng thái tại bước cụ thể trong quy trình, xác thực thứ tự ưu tiên, lọc dữ liệu theo vị trí cố định trong mảng cấu hình, v.v.