ตามเอกสารพังพอนสำหรับMongooseJSและMongoDB/ Node.js:
เมื่อแอปพลิเคชันของคุณเริ่มต้นขึ้น Mongoose จะเรียก
ensureIndexใช้ดัชนีที่กำหนดไว้ในสคีมาของคุณโดยอัตโนมัติ แม้ว่าจะเหมาะสำหรับการพัฒนา แต่ขอแนะนำให้ปิดใช้งานพฤติกรรมนี้ในการผลิตเนื่องจากการสร้างดัชนีอาจทำให้เกิดผลกระทบต่อประสิทธิภาพอย่างมาก ปิดการทำงานโดยตั้งค่าautoIndexตัวเลือกของสคีมาของคุณเป็นเท็จ
สิ่งนี้ดูเหมือนจะแนะนำให้ลบการจัดทำดัชนีอัตโนมัติจากพังพอนก่อนที่จะปรับใช้เพื่อเพิ่มประสิทธิภาพ Mongoose จากการสั่งให้ Mongo ไปและปั่นผ่านดัชนีทั้งหมดในการเริ่มต้นแอปพลิเคชันซึ่งดูเหมือนจะสมเหตุสมผล
วิธีที่เหมาะสมในการจัดการการจัดทำดัชนีในรหัสการผลิตคืออะไร? บางทีสคริปต์ภายนอกควรสร้างดัชนี? หรืออาจensureIndexไม่จำเป็นหากแอปพลิเคชั่นเดียวเป็นผู้อ่าน / เขียนเพียงคนเดียวในคอลเลคชันเนื่องจากจะดำเนินการต่อดัชนีทุกครั้งที่มีการเขียน DB
แก้ไข:เพื่อเสริม MongoDB มีเอกสารที่ดีสำหรับวิธีการจัดทำดัชนี แต่ไม่ควรทำทำไมหรือเมื่อใดจึงควรทำคำสั่งการจัดทำดัชนีอย่างชัดเจน สำหรับฉันแล้วดูเหมือนว่าดัชนีควรได้รับการอัปเดตโดยแอปพลิเคชันนักเขียนโดยอัตโนมัติในคอลเลกชันที่มีดัชนีที่มีอยู่และนั่นensureIndexเป็นสิ่งที่ทำได้เพียงครั้งเดียว (ทำเมื่อมีการใช้ดัชนีใหม่) ซึ่งในกรณีนี้ Mongoose autoIndexควรเป็น no-op ภายใต้การรีสตาร์ทเซิร์ฟเวอร์ปกติ