Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB
MongoDB
  1. การอัปเดตอาร์เรย์สตริงซ้อนในอาร์เรย์ออบเจกต์ MongoDB ด้วย $pull และ Filtered Array Updates

    ลบค่าเฉพาะจากอาร์เรย์ซ้อน (Nested Array) ด้วย $[] MongoDB 3.6+ รองรับ Filtered Array Updates ผ่าน arrayFilters และตัวระบุตำแหน่ง $[] ช่วยอัปเดตอาร์เรย์ซ้อนได้อย่างแม่นยำ ตัวอย่างข้อมูลทดสอบ db.demo412.insertOne({ Information1: [ { Information2: [John, David] }, { Information2: [Mike] }

  2. การยกเว้นฟิลด์ซ้อน (Nested Fields) ใน MongoDB ด้วย Aggregation Pipeline

    ซ่อนฟิลด์ซ้อนในออบเจกต์ด้วย $objectToArray, $project, $arrayToObject MongoDB ไม่รองรับ wildcard projection (เช่น details.*.Age: 0) โดยตรงใน find() แต่สามารถทำได้ผ่าน Aggregation Pipeline โดยแปลงออบเจกต์เป็นอาร์เรย์ กรอง แล้วแปลงกลับ ตัวอย่างข้อมูลทดสอบ db.demo413.insertOne({ _id: 101, details:

  3. การค้นหาในอาร์เรย์ออบเจกต์ตาม _id ด้วย Aggregation ใน MongoDB

    ใช้ $unwind และ $match เพื่อค้นหาในอาร์เรย์ออบเจกต์ เมื่อต้องการค้นหาเอกสารที่มีอาร์เรย์ของออบเจกต์ และต้องการคืนค่าเฉพาะออบเจกต์ที่ match (ไม่ใช่เอกสารทั้งชิ้น) ให้ใช้ Aggregation Pipeline พร้อม $unwind และ $match ตัวอย่างข้อมูลทดสอบ db.demo414.insertOne({ _id: 110, details: [ { StudentNa

  4. การเลือกฟิลด์เฉพาะที่ต้องการในคิวรี MongoDB (Projection)

    ใช้ Projection ใน find() เพื่อเลือกแสดงเฉพาะฟิลด์ที่ต้องการ ใน MongoDB การ เลือกฟิลด์ (Projection) ทำได้โดยระบุฟิลด์ที่ต้องการเป็น 1 หรือฟิลด์ที่ไม่ต้องการเป็น 0 ในพารามิเตอร์ที่สองของ find() ตัวอย่างข้อมูลทดสอบ db.demo415.insertOne({ ClientName: Bob, ClientCountryName: AUS }); แสดงข้อมูลทั้งหมด

  5. การแปลงคอลเลกชันทั่วไปเป็น Capped Collection ใน MongoDB

    แปลง Collection เป็น Capped Collection ด้วย runCommand Capped Collection เป็นคอลเลกชันที่มีขนาดคงที่ (Fixed Size) ทำงานแบบ Circular Buffer - เมื่อเต็มจะทับข้อมูลเก่าทีละตัว ใช้เหมาะสำหรับ Log, Cache, Real-time data ที่ไม่ต้องเก็บนาน ตัวอย่างข้อมูลทดสอบ db.demo416.insertOne({ StudentName: Sam });

  6. การเพิ่มเงินเดือนพนักงาน 10% ใน MongoDB ด้วย $mul

    คูณค่าตัวเลขฟิลด์ด้วยตัวคูณด้วย $mul แบบ Atomic ตัวดำเนินการ $mul ใช้คูณค่าของฟิลด์ตัวเลขด้วยตัวเลขที่ระบุ เหมาะสำหรับการเพิ่มร้อยละ เช่น เพิ่มเงินเดือน 10% (คูณ 1.1) ลดราคา 20% (คูณ 0.8) ฯลฯ ตัวอย่างข้อมูลทดสอบ db.demo417.insertOne({ EmployeeName: Mike, EmployeeSalary: 1000 }); แสดงข้อมูลก่อนอัป

  7. การกรองเอกสารที่ทุกองค์ประกอบในอาร์เรย์ซ้อนตรงตามเงื่อนไขใน MongoDB

    กรองเอกสารที่ทุกสมาชิกใน Nested Array ผ่านเงื่อนไขด้วย Aggregation เมื่อต้องการหาเอกสารที่ ทุกองค์ประกอบ ในอาร์เรย์ซ้อน (Nested Array) ตรงตามเงื่อนไข (เช่น CountryName = US ทุกตัว) ให้ใช้ Aggregation Pipeline พร้อม $unwind, $group, และ $cond ตัวอย่างข้อมูลทดสอบ db.demo418.insertOne({ details: [

  8. การอัปเดตออบเจกต์ในอาร์เรย์ด้วยคีย์เฉพาะใน MongoDB

    อัปเดตเฉพาะออบเจกต์ในอาร์เรย์ที่ตรงตามเงื่อนไขด้วย Positional $ Operator ใช้ Positional $ Operator ในคำสั่ง update เพื่ออัปเดตเฉพาะออบเจกต์ในอาร์เรย์ที่ match กับเงื่อนไขค้นหา ตัวอย่างข้อมูลทดสอบ db.demo419.insertOne({ ProductInformation: [ { ProductName: Product-1, ProductPrice: 500 },

  9. การหาส่วนร่วมของอาร์เรย์สองชุดใน MongoDB ด้วย $setIntersection

    หาค่าที่ซ้ำกันระหว่างอาร์เรย์สองชุดด้วย $setIntersection ตัวดำเนินการ $setIntersection ใน Aggregation Pipeline ใช้สำหรับหาค่าที่ปรากฏใน ทั้งสองอาร์เรย์ (Intersection) โดยคืนค่าเป็นอาร์เรย์ที่มีเฉพาะค่าที่ซ้ำกัน (ไม่ซ้ำกัน Unique) ตัวอย่างข้อมูลทดสอบ db.demo61.insertOne({ Values1: [10, 20, 30, 40

  10. การเรียงลำดับตามคอลัมน์ ObjectId ใน MongoDB

    เรียงลำดับเอกสารตาม _id (ObjectId) ด้วย sort() ฟิลด์ _id ใน MongoDB เป็น ObjectId ซึ่งประกอบด้วย Timestamp (4 ไบต์แรก) Machine ID, Process ID, และ Counter การเรียงตาม _id จึงเทียบเท่ากับการเรียงตามเวลาสร้างเอกสาร (ประมาณ) ตัวอย่างข้อมูลทดสอบ db.demo403.insertOne({ Name: Adam }); แสดงข้อมูล (เรียง

  11. การเรียงลำดับเอกสารตามคำเฉพาะใน MongoDB ด้วย $addFields และ $cond

    เรียงลำดับเอกสารตามลำดับความสำคัญของคำเฉพาะ (Custom Sort Order) เมื่อต้องการเรียงลำดับเอกสารตามค่าข้อความที่ไม่ใช่เรียงอักษรปกติ (เช่น เรียง MongoDB ก่อน MySQL ก่อน Java) ให้สร้างฟิลด์ช่วยสำหรับการเรียงด้วย $addFields และ $cond แล้วค่อย $sort ตัวอย่างข้อมูลทดสอบ db.demo62.insertOne({ Subject: Java

  12. การจำลอง Transaction Lock ใน MongoDB 4.0 ด้วย findOneAndUpdate

    ใช้ findOneAndUpdate() แทน Transaction ใน MongoDB 4.0 MongoDB 4.0 ยังไม่รองรับ Multi-document Transaction (รองรับตั้งแต่ 4.0 สำหรับ Replica Set และ 4.2 สำหรับ Sharded Cluster) สำหรับกรณีที่ต้องการ Lock เอกสารเพื่อป้องกัน Race Condition สามารถใช้ findOneAndUpdate() ซึ่งทำงานแบบ Atomic ตัวอย่างข้อมูล

  13. การทำงานกับคำสั่ง find() ใน MongoDB

    พื้นฐานการใช้งาน find() ใน MongoDB เมธอด find() ใช้สำหรับเลือกเอกสารจากคอลเลกชันหรือ View และคืนค่าเป็น Cursor ที่ชี้ไปยังเอกสารที่เลือกได้ พฤติกรรมพื้นฐาน find() โดยไม่มีพารามิเตอร์: คืนเอกสารทั้งหมดในคอลเลกชัน พร้อมทุกฟิลด์ find(query): คืนเอกสารที่ตรงตามเงื่อนไข query find(query, projecti

  14. การรวมยอดรวมในกลุ่มเดียวด้วย $sum ใน MongoDB Aggregation

    คำนวณสถิติหลายอย่างพร้อมกันในกลุ่มเดียวด้วย $sum และ $cond ใช้ $group ร่วมกับ $sum และ $cond เพื่อคำนวณเงื่อนไขต่างๆ ในครั้งเดียว เช่น นับจำนวนที่เท่ากับค่าเฉพาะ นับจำนวนที่ไม่เท่ากับค่าเฉพาะ และรวมค่าที่ผ่านเงื่อนไข ตัวอย่างข้อมูลทดสอบ db.demo406.insertOne({ Score: 45 }); แสดงข้อมูลทั้งหมด db.d

  15. การใช้อาร์เรย์เป็นตัวกรองสำหรับคิวรีซับเอกสารใน MongoDB ด้วย $setIsSubset

    กรองอาร์เรย์ซับเอกสารด้วย $setIsSubset ใน Aggregation ตัวดำเนินการ $setIsSubset ใช้ตรวจสอบว่าชุดค่าหนึ่งเป็นสับเซต (Subset) ของอีกชุดหนึ่งหรือไม่ ใช้ร่วมกับ $filter ใน Aggregation Pipeline เพื่อกรององค์ประกอบในอาร์เรย์ ตัวอย่างข้อมูลทดสอบ db.demo407.insertOne({ Name: Chris, details: [ { id

  16. การสร้างผู้ใช้ MongoDB บนฐานข้อมูลที่มีอยู่พร้อมกำหนด Role

    สร้างผู้ใช้ใหม่และกำหนดสิทธิ์ด้วย createUser() ใช้คำสั่ง db.createUser() เพื่อสร้างผู้ใช้ใหม่ในฐานข้อมูลปัจจุบัน พร้อมกำหนด Role (บทบาท) และ Authentication Mechanism คำสั่งสร้างผู้ใช้ db.createUser({ user: John, pwd: 123456, roles: [{ role: readWrite, db: test }], mechanisms: [SCRAM-SHA-25

  17. การทำความเข้าใจ Query Plan ใน MongoDB ด้วย explain()

    วิเคราะห์แผนการดำเนินการคิวรีด้วย explain() เมธอด explain() ให้ข้อมูลรายละเอียดเกี่ยวกับวิธีที่ MongoDB ดำเนินการคิวรี รวมถึงการใช้ดัชนี จำนวนเอกสารที่สแกน และแผนการทำงานที่เลือก ตัวอย่างข้อมูลและสร้างดัชนี db.demo408.createIndex({ Value: 1 }); แสดงข้อมูลทั้งหมด db.demo408.find(); 40 db.demo4

  18. การค้นหาเอกสาร MongoDB ที่มีสตริงเฉพาะด้วย Regular Expression

    ใช้ Regex ใน find() เพื่อค้นหาข้อความในฟิลด์ MongoDB รองรับการค้นหาข้อความด้วย Regular Expression (Regex) โดยตรงในคำสั่ง find() โดยใช้รูปแบบ /pattern/ หรืออ็อปชัน $regex ตัวอย่างข้อมูลทดสอบ db.demo409.insertOne({ Name: David Brown }); แสดงข้อมูลทั้งหมด db.demo409.find(); ผลลัพธ์: { _id: ObjectId

  19. การคัดลอกค่าฟิลด์หนึ่งไปยังอีกฟิลด์ใน MongoDB ด้วย $set และ forEach

    คัดลอกค่าระหว่างฟิลด์ในเอกสารเดียวกัน เมื่อต้องการคัดลอกค่าจากฟิลด์หนึ่งไปยังอีกฟิลด์หนึ่งในทุกเอกสาร สามารถใช้ forEach() ร่วมกับ update() และ $set ได้ ตัวอย่างข้อมูลทดสอบ db.demo55.insertOne({ ShippingDate: , date: new ISODate(2020-05-12) }); แสดงข้อมูลก่อนคัดลอก db.demo55.find(); ผลลัพธ์: { _i

  20. การใช้ $push ใน Aggregation Pipeline เพื่อรวมเอกสารเป็นอาร์เรย์ใน MongoDB

    รวมเอกสารหลายชิ้นเป็นอาร์เรย์เดียวด้วย $push ใน $group ตัวดำเนินการ $push ใน $group stage ของ Aggregation Pipeline ใช้สำหรับสะสมค่าจากทุกเอกสารในกลุ่ม (group) เข้าไปในอาร์เรย์เดียว ตัวอย่างข้อมูลทดสอบ db.demo399.insertOne({ Name: David, Age: 22 }); แสดงข้อมูลทั้งหมด db.demo399.find(); ผลลัพธ์: 5

Total 1351 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:19/68  20-คอมพิวเตอร์/Page Goto:1 13 14 15 16 17 18 19 20 21 22 23 24 25