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

Truy vấn MongoDB cho trường boolean 'không phải true'

Để truy vấn các document mà trường boolean không phải là true (tức là false hoặc không tồn tại), bạn sử dụng toán tử $ne (not equal).

Cú pháp

db.yourCollectionName.find({yourFieldName: {$ne: true}}).pretty();

Ví dụ minh họa

Tạo collection và dữ liệu

> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"Larry","EmployeeAge":24,"isOldEmployee":true});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8b7f7680f10143d8431e13") }
> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"Mike","EmployeeAge":20,"isOldEmployee":false});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8b7f8680f10143d8431e14") }
> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"Sam","EmployeeAge":23,"isOldEmployee":false});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8b7f9380f10143d8431e15") }
> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"David","EmployeeAge":25,"isOldEmployee":true});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8b7fa280f10143d8431e16") }
> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"Carol","EmployeeAge":27,"isOldEmployee":true});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8b7fae80f10143d8431e17") }

Xem tất cả documents

> db.queryForBooleanFieldsDemo.find().pretty();
{
    "_id" : ObjectId("5c8b7f7680f10143d8431e13"),
    "EmployeeName" : "Larry",
    "EmployeeAge" : 24,
    "isOldEmployee" : true
}
{
    "_id" : ObjectId("5c8b7f8680f10143d8431e14"),
    "EmployeeName" : "Mike",
    "EmployeeAge" : 20,
    "isOldEmployee" : false
}
{
    "_id" : ObjectId("5c8b7f9380f10143d8431e15"),
    "EmployeeName" : "Sam",
    "EmployeeAge" : 23,
    "isOldEmployee" : false
}
{
    "_id" : ObjectId("5c8b7fa280f10143d8431e16"),
    "EmployeeName" : "David",
    "EmployeeAge" : 25,
    "isOldEmployee" : true
}
{
    "_id" : ObjectId("5c8b7fae80f10143d8431e17"),
    "EmployeeName" : "Carol",
    "EmployeeAge" : 27,
    "isOldEmployee" : true
}

Truy vấn trường boolean không phải true

> db.queryForBooleanFieldsDemo.find({isOldEmployee: {$ne: true}}).pretty();
{
    "_id" : ObjectId("5c8b7f8680f10143d8431e14"),
    "EmployeeName" : "Mike",
    "EmployeeAge" : 20,
    "isOldEmployee" : false
}
{
    "_id" : ObjectId("5c8b7f9380f10143d8431e15"),
    "EmployeeName" : "Sam",
    "EmployeeAge" : 23,
    "isOldEmployee" : false
}

Giải thích

Toán tử $ne: true sẽ trả về các document mà:

  • Trường có giá trị false
  • Trường không tồn tại (missing field)
  • Trường có giá trị null
Lưu ý: Nếu bạn chỉ muốn tìm các document có trường tồn tại và giá trị là false (loại trừ null và missing), hãy dùng: { isOldEmployee: false } hoặc { isOldEmployee: { $eq: false } }.