Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB
MongoDB
  1. วิธีกรองเอกสารตามเงื่อนไขในอาร์เรย์ด้วย MongoDB

    ใช้ $elemMatch สำหรับ Match หลายเงื่อนไขในอิลิเมนต์เดียว operator $elemMatch ใช้จับคู่เอกสารที่มีอิลิเมนต์ในอาร์เรย์ตรงตาม เงื่อนไขหลายอย่างพร้อมกัน ในอิลิเมนต์เดียวกัน ตัวอย่างข้อมูล > db.demo453.insertOne({ _id: 101, details: [{ Name: David, Marks: 60 }, { Name: Mike, Marks: 55 }] }); > db

  2. วิธีเผยแพร่ระเบียนล่าสุด N เรกคอร์ดพร้อมเรียงลำดับใน MongoDB

    ใช้ sort() และ limit() สำหรับ Pagination แบบ Real-time เพื่อดึงข้อมูลล่าสุด N รายการ ให้เรียงลำดับตามฟิลด์ที่บ่งบอกลำดับเวลา (เช่น _id, createdAt) แล้วจำกัดจำนวนด้วย limit() ตัวอย่างข้อมูล > db.demo454.insertOne({ ClientName: Chris }); > db.demo454.insertOne({ ClientName: John }); > db.de

  3. วิธีแสดงรายการออบเจ็กต์ตามคุณสมบัติเฉพาะใน MongoDB

    ใช้ Dot Notation ใน find() สำหรับ Query ฟิลด์ซ้อน สามารถ query ฟิลด์ภายในออบเจ็กต์ซ้อนในอาร์เรย์ได้โดยตรงด้วย dot notation เช่น parent.array.field ตัวอย่างข้อมูล > db.demo455.insertOne({ Information: { Student: [{ Name: Chris, Age: 22 }] } }); > db.demo455.insertOne({ Information: { Student:

  4. วิธี Aggregate สองลิสต์ใน MongoDB เมื่อมีสมาชิกตรงกันอย่างน้อยหนึ่งราย

    หา Group ของเอกสารที่ Share สมาชิกในอาร์เรย์ ใช้ $unwind แยกสมาชิก, $group รวม _id ตามสมาชิก, แล้ว $match หากลุ่มที่มีสมาชิกร่วมกันมากกว่า 1 ตัวอย่างข้อมูล > db.demo456.insertOne({ _id: 101, StudentName: [Chris, David] }); > db.demo456.insertOne({ _id: 102, StudentName: [Mike, Sam] }); >

  5. วิธีคืนเอกสารพร้อม Sub-document ที่กรองแล้วใน MongoDB

    ใช้ $project ร่วม $filter สำหรับกรอง Sub-document เมื่อต้องการคืนเอกสารเต็มรูปแบบ แต่เฉพาะ sub-document ในอาร์เรย์ที่ผ่านเงื่อนไข ให้ใช้ $project พร้อม $filter ใน aggregation pipeline ตัวอย่างข้อมูล > db.demo457.insertOne({ _id: 101, details: [{ ProductName: Product-1, ProductPrice: 90 }, { Pro

  6. วิธีอัปเดตระเบียน (Record) ใน MongoDB

    ใช้ update() พร้อม $set และระบุ _id การอัปเดตเอกสารใน MongoDB ควรทำโดยระบุ _id เพื่อความแม่นยำ และใช้ operator $set เพื่ออัปเดตเฉพาะฟิลด์ที่ต้องการ ตัวอย่างข้อมูล > db.demo458.insertOne({ _id: 101, Name: David }); > db.demo458.insertOne({ _id: 102, Name: Chris }); > db.demo458.insertOne({

  7. วิธีดึงข้อมูลจากอาร์เรย์ของออบเจ็กต์ใน MongoDB

    ใช้ $unwind แยกอาร์เรย์ แล้ว $group รวมค่าที่ต้องการ เมื่อข้อมูลอยู่ในอาร์เรย์ของออบเจ็กต์ซ้อนหลายชั้น ให้ $unwind ทีละระดับ จนได้ระดับที่ต้องการ แล้วค่อยกรองและรวม ตัวอย่างข้อมูล > db.demo459.insertOne({ _id: 1, Information: [ { Name: Chris, _id: new ObjectId(), details: [HR] }, {

  8. แก้ปัญหา Cast to ObjectId Failed ใน MongoDB

    แปลง String เป็น ObjectId ด้วย Aggregation เมื่อ _id เก็บเป็น String แต่ต้องการใช้เป็น ObjectId ให้ใช้ aggregation pipeline พร้อม $toObjectId (MongoDB 4.0+) หรือ $convert ตัวอย่างข้อมูล _id เป็น String > db.demo460.insertOne({ _id: 5ab9cbfa31c2ab715d42129e }); { acknowledged: true, insertedId:

  9. วิธีนับจำนวนรายการในอาร์เรย์ด้วย MongoDB

    ใช้ .length ใน MongoDB Shell วิธีง่ายที่สุดในการนับจำนวนสมาชิกในอาร์เรย์คือใช้ property .length บนผลลัพธ์ของ findOne() ตัวอย่างข้อมูล > db.demo440.insertOne({ Name: Chris, ListOfFriends: [John, Sam, Mike] }); > db.demo440.insertOne({ Name: David, ListOfFriends: [Mike, Bob, Carol] }); Query

  10. MongoDB Query: Aggregate อาร์เรย์ซ้อน (Nested Array)

    การประมวลผลอาร์เรย์ซ้อนหลายชั้นด้วย Aggregation Pipeline ใช้ $addFields, $map, $let, $arrayElemAt, $cond เพื่อแปลงและกรองข้อมูลในอาร์เรย์ซ้อนหลายระดับ ตัวอย่างข้อมูล (3 ระดับ) > db.demo441.insertOne({ Name: David, Age: 21, details: [{ id: 1, CountryName: US, details1: [ { Subj

  11. วิธีดึงค่าที่ไม่ซ้ำกัน (Distinct) จากอาร์เรย์ของออบเจ็กต์ใน MongoDB

    ใช้ distinct() กับ Dot Notation เมธอด distinct() รองรับ dot notation เข้าถึงฟิลด์ภายในอาร์เรย์ของออบเจ็กต์ได้โดยตรง ตัวอย่างข้อมูล > db.demo442.insertOne({ Information: [ { FirstName: John, Age: 21 }, { FirstName: Sam, Age: 23 }, { FirstName: John, Age: 24 }, { FirstName: Caro

  12. MongoDB Profiler: Operation "command" คืออะไร?

    การดำเนินการที่ถูกจัดว่าเป็น command ใน MongoDB Profiler ใน MongoDB Profiler การดำเนินการต่อไปนี้ถูกจัดประเภทเป็น command operation: count - นับจำนวนเอกสาร findAndModify - ค้นหาและแก้ไขแบบ atomic aggregate - aggregation pipeline ตัวอย่าง count operation > db.demo443.insertOne({ Name: Chris }

  13. ปรับปรุง Query MongoDB ด้วย Multikey Index ในอาร์เรย์

    ใช้ $elemMatch สำหรับ Query ออบเจ็กต์ในอาร์เรย์ เมื่อต้องการค้นหาเอกสารที่อาร์เรย์มีออบเจ็กต์ตรงตามเงื่อนไขหลายฟิลด์พร้อมกัน ให้ใช้ $elemMatch ซึ่งทำงานร่วมกับ Multikey Index ได้อย่างมีประสิทธิภาพ ตัวอย่างข้อมูล > db.demo444.insertOne({ Information: [{ id: 1, Name: Chris }] }); > db.demo444.

  14. ไม่สามารถ Push เข้าอาร์เรย์ใน MongoDB ได้? วิธีแก้ไข

    ใช้ $push สำหรับเพิ่มข้อมูลลงอาร์เรย์ หากไม่สามารถ push เข้าอาร์เรย์ได้ ให้ตรวจสอบว่าใช้ operator $push อยู่ภายใน update operation หรือไม่ ตัวอย่างข้อมูล > db.demo445.insertOne({ ListOfFriends: [Robert, Mike, Sam, Carol, David, Mike] }); แสดงข้อมูลก่อน > db.demo445.find().pretty(); Query P

  15. วิธีรวมสองคอลเลกชันใน MongoDB โดยเปรียบเทียบฟิลด์จากคอลเลกชันหนึ่งมากกว่าอีกคอลเลกชัน

    ใช้ $lookup ร่วมกับ $redact สำหรับการ Join แบบมีเงื่อนไข เมื่อต้องการ join สองคอลเลกชันและกรองเฉพาะเอกสารที่ฟิลด์หนึ่งมีค่ามากกว่าฟิลด์ในอีกคอลเลกชัน ใช้ $lookup + $unwind + $redact คอลเลกชันแรก: demo446 > db.demo446.insert([{ ProductName: Product1, ProductPrice: 60 }, { ProductName: Product2,

  16. ความแตกต่างระหว่าง deleteOne() และ findOneAndDelete() ใน MongoDB

    เปรียบเทียบสองวิธีลบเอกสารเดี่ยว ทั้งคู่ลบเอกสารเพียงหนึ่งฉบับ แต่แตกต่างกันที่ ค่าที่คืนกลับ (return value) deleteOne() ลบเอกสารหนึ่งฉบับที่ตรงกับ filter คืนค่า: { acknowledged: true, deletedCount: 1 } ไม่คืนข้อมูลที่ถูกลบ เหมาะสำหรับการลบแบบไม่ต้องการข้อมูลกลับ findOneAndDelete() ลบเอกสารหนึ

  17. วิธีเพิ่มรายการลงในอาร์เรย์ที่อยู่ภายในออบเจ็กต์ใน MongoDB

    ใช้ $push กับ Dot Notation สำหรับอาร์เรย์ซ้อน เมื่อต้องการเพิ่มข้อมูลลงในอาร์เรย์ที่อยู่ภายในออบเจ็กต์ ให้ใช้ $push ร่วมกับ dot notation ระบุพาธเต็มของอาร์เรย์ ตัวอย่างข้อมูล > db.demo449.insertOne({ details1: { details2: [{ _id: new ObjectId(), Name: Chris }], details3: [{ _id: new O

  18. วิธีเข้าถึงข้อมูลซ้อน (Subdata) และแสดงเอกสารเฉพาะใน MongoDB

    การใช้ Dot Notation สำหรับ Query ข้อมูลลึก ใน MongoDB สามารถ query เข้าถึงฟิลด์ภายในออบเจ็กต์ซ้อนได้โดยตรงด้วย dot notation เช่น parent.child.field ตัวอย่างข้อมูล > db.demo450.insertOne({ Information: { StudentDetails: { StudentName: Chris, StudentAge: 21 } } }); > db.demo450.insertOne({ Inf

  19. MongoDB Query: จัดกลุ่มข้อมูลและแสดงค่าเฉพาะด้วย Dot Notation

    การใช้ $group กับ Dot Notation สำหรับอาร์เรย์ซ้อน เมื่อข้อมูลอยู่ในอาร์เรย์ของออบเจ็กต์ สามารถใช้ dot notation เข้าถึงฟิลด์ภายในได้โดยตรงใน $group ตัวอย่างข้อมูล > db.demo430.insertOne({ details: [ { Name: Chris }, { Name: David }, { Name: Adam }, { Name: Bob } ] }); แสดงข้

  20. วิธีอัปเดตเอกสารทั้งหมด (ทุกฟิลด์) ใน MongoDB ให้เร็วที่สุด

    ใช้ replaceOne() สำหรับการแทนที่เอกสารทั้งฉบับ เมื่อต้องการอัปเดตทุกฟิลด์ของเอกสาร ให้ใช้ replaceOne() ซึ่งเร็วกว่าและชัดเจนกว่า $set หลายฟิลด์ ตัวอย่างข้อมูล > db.demo431.insertOne({ Name: Chris, Age: 32 }); > db.demo431.insertOne({ Name: David, Age: 31 }); > db.demo431.insertOne({ Name:

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