يمنحك نموذج المستند في MongoDB مرونة لا تصدق — لكن بدون انضباط، تتحول هذه المرونة إلى عبء. هذه هي الأنماط التي ألجأ إليها عند تصميم المخططات لتطبيقات Node.js الإنتاجية.
التضمين مقابل الإشارة
ضمّن حين تُجلب البيانات معاً، وعلاقتها 1-to-few، والمستند المضمّن ينتمي إلى أب واحد. أشِر حين تكون البيانات مشتركة عبر مستندات، أو علاقتها 1-to-many مع نمو غير محدود، أو تحتاج استعلاماً مستقلاً. القاعدة الموجِّهة: صمّم البيانات بالطريقة التي يستخدمها تطبيقك، لا بالطريقة التي علّمتك إياها SQL.
استراتيجية الفهرسة
كل استعلام يمس أكثر من بضعة آلاف من المستندات يحتاج فهرساً. استخدم الفهارس المركّبة (حقل A + حقل B) حين تستعلم عنهما معاً دائماً. ضع حقل المساواة أولاً، ثم حقل النطاق، ثم حقل الفرز — هذه هي قاعدة ESR وهي تُبقي الفهارس فعّالة.
أفضل ممارسات Mongoose
تحقق على مستوى المخطط بالمدقّقات المدمجة، لا فقط في معالجات المسار. استخدم lean() للنقاط النهائية الثقيلة بالقراءة — يتخطى مرحلة تضخيم مستند Mongoose ويُعيد كائنات عادية، مما يحسّن الإنتاجية بشكل ملحوظ. عرّف timestamps: true للحصول على createdAt وupdatedAt تلقائياً.