Để truy vấn dựa trên trường boolean, có thể so sánh trực tiếp giá trị true/false hoặc dùng $exists để kiểm tra sự tồn tại của trường con.
Tạo collection với trường boolean và mảng đối tượng:
> db.demo367.insertOne({
"Id" : "102",
"details" : [ { "Name" : "David"}, { "Age" : 23, "CountryName" : "UK"} ],
"isMarried" : false
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57e0b62ae06a1609a00ae8") }
> db.demo367.insertOne({
"Id" : "101",
"details" : [ { "Name" : "Chris", "Subject" : [ "MySQL" ] }, { "Age" : 21, "CountryName" : "US"} ],
"isMarried" : true
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57e0be2ae06a1609a00ae9") }
Xem dữ liệu:
> db.demo367.find();
{
"_id" : ObjectId("5e57e0b62ae06a1609a00ae8"),
"Id" : "102",
"details" : [ { "Name" : "David" }, { "Age" : 23, "CountryName" : "UK" } ],
"isMarried" : false
}
{
"_id" : ObjectId("5e57e0be2ae06a1609a00ae9"),
"Id" : "101",
"details" : [ { "Name" : "Chris", "Subject" : [ "MySQL" ] }, { "Age" : 21, "CountryName" : "US" } ],
"isMarried" : true
}
Tìm tài liệu KHÔNG có trường details.Subject (sử dụng $exists: false):
> db.demo367.find({"details.Subject": { $exists: false}});
Kết quả (chỉ tài liệu Id=102):
{ "_id" : ObjectId("5e57e0b62ae06a1609a00ae8"), "Id" : "102", "details" : [ { "Name" : "David" }, { "Age" : 23, "CountryName" : "UK" } ], "isMarried" : false }
Các cách truy vấn boolean:
{isMarried: true}- tìm true{isMarried: false}- tìm false{isMarried: {$exists: true}}- trường tồn tại{isMarried: {$exists: false}}- trường không tồn tại