บทนี้นำเสนอเกี่ยวกับดัชนี MongoDB คล้ายกับ MYSQL, MongoDB ยังรองรับดัชนีด้วย ความแตกต่างคือ MongoDB รองรับการเพิ่มดัชนีไปยังฟิลด์ซ้อนของโครงสร้าง JSON ด้วยจุดประสงค์เดียวกันคือเพิ่มประสิทธิภาพในการคิวรี่
ประเภทของดัชนี MongoDB
ดัชนีฟิลด์เดี่ยว
คล้ายกับ MYSQL, การสร้างดัชนีสำหรับฟิลด์เดี่ยว
รูปแบบ:
db.collection.createIndex( { field_name: ทิศทางการเรียงลำดับ(1 หรือ -1) } )
หมายเหตุ: ทิศทางการเรียงลำดับ 1 แทนการเรียงลำดับขึ้น, และ -1 แทนการเรียงลำดับลง
ตัวอย่าง 1:
db.records.createIndex( { score: 1 } )
สร้างดัชนีสำหรับฟิลด์ score
ตัวอย่าง 2:
db.records.createIndex( { "location.state": 1 } )
สร้างดัชนีสำหรับฟิลด์ JSON ที่ซ้อนอยู่ใน location.state
ดัชนีผสาน
คล้ายกับ MYSQL, สามารถรวมหลายฟิลด์เข้าด้วยกันเพื่อสร้างดัชนี เพิ่่มความเร็วในการคิวรี่ที่ผสานกัน
รูปแบบ:
db.collection.createIndex( { <field1>: <type>, <field2>: <type2>, ... } )
ตัวอย่าง:
db.products.createIndex( { "item": 1, "stock": 1 } )
สร้างดัชนีผสานสำหรับฟิลด์ item และ stock ทั้งสองเรียงลำดับขึ้น (1 แทนการเรียงลำดับขึ้น)
ดัชนีข้อความ (Full-text Index)
ดัชนีข้อความ (text) ใช้เพื่อรองรับการค้นหาข้อความทั้งหมด
หมายเหตุ: คอลเลคชั่นอนุญาตเพียง 1 ดัชนีข้อความเท่านั้น แต่ดัชนีข้อความสามารถรวมหลายฟิลด์ได้
ตัวอย่าง:
db.stores.createIndex( { name: "text", description: "text" } )
สร้างดัชนีข้อความทั้งหมดสำหรับฟิลด์ name และ description
หมายเหตุ: สำหรับรายละเอียดโปรดดูที่ ส่วนดัชนีข้อความทั้งหมด.
ดัชนีพื้นที่ (GEO Index)
ใช้เพื่อรองรับคิวรี่ที่เกี่ยวกับข้อมูลทางภูมิศาสตร์ รองรับสองประเภทของดัชนี: 2dsphere และ 2d สำหรับรายละเอียดโปรดดูที่ ส่วนคิวรี่ทางภูมิศาสตร์.
การลบดัชนี
เพื่อรายการดัชนีทั้งหมดในคอลเล็กชัน:
db.pets.getIndexes()
เพื่อลบดัชนี catIdx จากคอลเล็กชัน pets:
db.pets.dropIndex( "catIdx" )