Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

วิธี Insert Boolean Field ใน MongoDB

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

Boolean ใน Index

สร้าง index บน boolean field ได้ แต่ selectivity ต่ำ (แค่ 2 ค่า) เหมาะสำหรับ compound index:

db.demo215.createIndex({"EmployeeDetails.isMarried": 1, "EmployeeDetails.Salary": 1})

สรุป: ใช้ true/false โดยตรง ไม่ต้อง quotes MongoDB จัดการ boolean type ได้อย่างสมบูรณ์

Operatorตัวอย่างคำอธิบาย
$eq{isMarried: {$eq: true}}เท่ากับ true
$ne{isMarried: {$ne: true}}ไม่เท่ากับ true (คือ false หรือไม่มี field)
$in{isMarried: {$in: [true]}}อยู่ใน array
$nin{isMarried: {$nin: [true]}}ไม่อยู่ใน array