MongoDB การจัดทำดัชนีขั้นสูง
พิจารณาเอกสารต่อไปนี้คอลเลกชัน (ผู้ใช้):
{ "address": { "city": "Los Angeles", "state": "California", "pincode": "123" }, "tags": [ "music", "cricket", "blogs" ], "name": "Tom Benzamin" }
เอกสารดังกล่าวข้างต้นมีเอกสารย่อยและที่อยู่อาร์เรย์ของแท็ก
ข้อมูลอาร์เรย์จัดทำดัชนี
สมมติว่าเราดึงฉลากตามผู้ใช้ที่เราต้องดัชนีแท็กคอลเลกชันอาร์เรย์
สร้างดัชนีในอาร์เรย์อาร์เรย์ของความต้องการสำหรับแต่ละเขตข้อมูลในการเปิดการจัดทำดัชนี ดังนั้นเมื่อเราสร้างดัชนีสำหรับแท็กอาร์เรย์ก็จะให้เพลง, คริกเก็ต, บล็อกสามค่าเพื่อสร้างดัชนีแยกต่างหาก
สร้างดัชนีอาร์เรย์ใช้คำสั่งต่อไปนี้:
>db.users.ensureIndex({"tags":1})
หลังจากที่สร้างดัชนีที่เราสามารถดึงคอลเลกชันแท็กข้อมูล:
>db.users.find({tags:"cricket"})
เราใช้ในการตรวจสอบการใช้ดัชนีที่คุณสามารถใช้คำสั่งอธิบาย:
>db.users.find({tags:"cricket"}).explain()
ผลของคำสั่งดังกล่าวจะแสดง "เคอร์เซอร์": "BtreeCursor tags_1" ก็กล่าวว่าดัชนีมีการใช้
ดัชนีฟิลด์ย่อยเอกสาร
สมมติว่าเราต้องการเมืองรัฐฟิลด์ Pincode เรียกเอกสารเป็นเขตข้อมูลเหล่านี้เป็นสาขาที่เอกสารย่อยดังนั้นเราต้องสร้างดัชนีเอกสารย่อย
สร้างดัชนีสำหรับสามย่อยสาขาของเอกสารที่คำสั่งดังต่อไปนี้:
>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})
เมื่อดัชนีจะถูกสร้างขึ้นเราสามารถใช้ข้อมูลเพื่อดึงข้อมูลเอกสารย่อย:
>db.users.find({"address.city":"Los Angeles"})
จำนิพจน์แบบสอบถามจะต้องปฏิบัติตามคำสั่งของดัชนีที่ระบุ ดังนั้นดัชนีที่สร้างขึ้นดังกล่าวข้างต้นจะให้การสนับสนุนแบบสอบถามต่อไปนี้:
>db.users.find({"address.city":"Los Angeles","address.state":"California"})
นอกจากนี้ยังสนับสนุนแบบสอบถามต่อไปนี้:
>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})