"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا لا تنتهي صلاحية مستندات MongoDB الخاصة بي بعد 5 ثوانٍ مع تشغيل فهارس TTL؟

لماذا لا تنتهي صلاحية مستندات MongoDB الخاصة بي بعد 5 ثوانٍ مع تشغيل فهارس TTL؟

تم النشر بتاريخ 2024-11-07
تصفح:399

Why Aren\'t My MongoDB Documents Expiring After 5 Seconds with TTL Indexes in Go?

باستخدام MongoDB انتهاء صلاحية المستندات بعد عدد محدد من الثواني في الانتقال

باستخدام فهارس TTL، يتيح لك MongoDB انتهاء صلاحية المستندات تلقائيًا بعد فترة محددة مدة. توضح هذه المقالة كيفية تحقيق ذلك في Go باستخدام برنامج التشغيل mongo-go-drive الرسمي.

باتباع وثائق MongoDB، يوضح الكود كيفية:

  • إنشاء فهرس مع انتهاء صلاحيةAfterSeconds الخيار
  • أدخل بيانات نموذجية مع طوابع زمنية مختلفة للإنشاء

ومع ذلك، يعمل المثال المقدم بشكل صحيح، ولا تتعلق المشكلة بالكود.

] فهم سلوك فهرس TTL

تحدد المعلمةexperiAfterSeconds المدة بعد الحقل createAt عندما يجب اعتبار المستند منتهية الصلاحية. ومع ذلك، فإن حذف المستندات منتهية الصلاحية ليس فوريًا.

وفقًا لوثائق MongoDB:

"لا يضمن فهرس TTL حذف البيانات منتهية الصلاحية فور انتهاء الصلاحية. قد يكون هناك تأخير بين وقت انتهاء صلاحية المستند والوقت الذي يقوم فيه MongoDB بإزالة المستند من قاعدة البيانات. كل 60 ثانية. لذلك، قد تظل المستندات في المجموعة لمدة تصل إلى 60 ثانية بعد انتهاء صلاحيتها. علاوة على ذلك، إذا كانت قاعدة البيانات تحت تحميل كثيف، فقد يستغرق الأمر وقتًا إضافيًا لحذف جميع المستندات منتهية الصلاحية.

الحل

في مقتطف التعليمات البرمجية الخاص بك، تتوقع بعض المستندات التي سيتم حذفها بعد 5 ثوانٍ (استنادًا إلى خيارexperiAfterSeconds) ولكن انتظر ثوانٍ فقط بعد الإدراج للتحقق منها. لاختبار الوظيفة بشكل صحيح، يجب عليك إتاحة الوقت الكافي (عدة دقائق على الأقل) لتشغيل مهمة الخلفية وحذف المستندات منتهية الصلاحية.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3