บทนี้นำเสนอเกี่ยวกับดัชนี 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" )