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

Truy vấn mảng để kiểm tra giá trị true tại chỉ số n trong MongoDB

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ử $and kế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.