MongoDB รองรับ Boolean data type โดยตรง ใช้ค่า true และ false (ไม่ใช้ quotes) ตัวอย่างนี้สาธิตการ insert boolean field isMarried ใน array of objects
สร้างคอลเลกชันและข้อมูลตัวอย่าง
> db.demo215.insertOne({"EmployeeDetails":[{EmployeeName:"David","isMarried":false,"Salary":56000}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e344003d395bdc2134708") }
> db.demo215.insertOne({"EmployeeDetails":[{EmployeeName:"Bob","isMarried":true,"Salary":60000}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e344d03d395bdc2134709") }
> db.demo215.insertOne({"EmployeeDetails":[{EmployeeName:"Chris","isMarried":false,"Salary":78000}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e345a03d395bdc213470a") }
> db.demo215.insertOne({"EmployeeDetails":[{EmployeeName:"Mike","isMarried":true,"Salary":17000}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e346f03d395bdc213470b") }
แสดงข้อมูลทั้งหมด
> db.demo215.find();
ผลลัพธ์:
{ "_id" : ObjectId("5e3e344003d395bdc2134708"), "EmployeeDetails" : [ { "EmployeeName" : "David", "isMarried" : false, "Salary" : 56000 } ] }
{ "_id" : ObjectId("5e3e344d03d395bdc2134709"), "EmployeeDetails" : [ { "EmployeeName" : "Bob", "isMarried" : true, "Salary" : 60000 } ] }
{ "_id" : ObjectId("5e3e345a03d395bdc213470a"), "EmployeeDetails" : [ { "EmployeeName" : "Chris", "isMarried" : false, "Salary" : 78000 } ] }
{ "_id" : ObjectId("5e3e346f03d395bdc213470b"), "EmployeeDetails" : [ { "EmployeeName" : "Mike", "isMarried" : true, "Salary" : 17000 } ] }
คำอธิบาย:
isMarried: true/isMarried: false- ใช้ boolean literal โดยตรง (ไม่ใช่ string "true")- MongoDB จะเก็บเป็น BSON boolean type (1 byte)
- Query ได้แม่นยำ:
{"EmployeeDetails.isMarried": true}
Query ตัวอย่างกับ Boolean Field
หาพนักงานที่โสด (isMarried: false)
db.demo215.find({"EmployeeDetails.isMarried": false})
หาพนักงานที่สมรส (isMarried: true) และ Salary > 50000
db.demo215.find({
"EmployeeDetails": { $elemMatch: { isMarried: true, Salary: { $gt: 50000 } } }
})
Aggregation: นับจำนวนโสด/สมรส
db.demo215.aggregate([
{ $unwind: "$EmployeeDetails" },
{ $group: { _id: "$EmployeeDetails.isMarried", count: { $sum: 1 } } }
])
// ผลลัพธ์: {_id: true, count: 2}, {_id: false, count: 2}
Boolean Operators ใน Query
| Operator | ตัวอย่าง | คำอธิบาย |
|---|---|---|
$eq | {isMarried: {$eq: true}} | เท่ากับ true |
$ne | {isMarried: {$ne: true}} | ไม่เท่ากับ true (คือ false หรือไม่มี field) |
$in | {isMarried: {$in: [true]}} | อยู่ใน array |
$nin | {isMarried: {$nin: [true]}} | ไม่อยู่ใน array |