اخیراً لازم بود برخی از اسنادی را که پس از مدتی در MongoDB ذخیره کردم ، حذف کنم. من می توانم به چند نمونه از این دلیل که چرا می خواهیم داده ها را بعد از مدتی حذف کنیم ، فکر می کنم: > کاربران غیرفعال li>
ما می توانیم این کار را با اجرای cronjob که داده ها را حذف می کند انجام دهیم ، هر زمان داده جدیدی را وارد کنیم داده ها یا راه حل های دیگر. p>
خوشبختانه برای من ، همسرم به من گفت که MongoDB از قبل آن سازوکار را دارد. p class = “paragraf”> شاخص های TTL (Time-To-Live) نمایه های تک فیلدی خاصی هستند که MongoDB می تواند برای حذف خودکار اسناد از مجموعه پس از مدت زمان مشخصی از آنها استفاده کند. “> یک موضوع پس زمینه در MongoDB مقادیر موجود در فهرست را می خواند و اسناد منقضی شده را از مجموعه خارج می کند (معمولاً هر دقیقه). p>
به عنوان مثال ، برای ایجاد یک شاخص TTL در قسمت p> lastModifiedDate مجموعه رویداد ، از عملیات زیر در پوسته mongo استفاده کنید:
- قسمت نمایه شده باید از نوع تاریخ BSON یا آرایه ای از تاریخ های BSON باشد li>
- اگر قسمت نمایه شده در سند تاریخ یا آرایه ای نیست که دارای یک مقدار تاریخ باشد ، سند منقضی نمی شود. li>
- اگر سندی حاوی قسمت فهرست شده نباشد ، سند منقضی نمی شود. li>
حذف مشروط h2>
از MongoDB 3.2 ، یک مجموعه را می توان با استفاده از یک عبارت فیلتر مشخص ،
partialFilterExpression ، نمایه سازی کرد. از شاخص TTL می توان با نمایه های جزئی نیز استفاده کرد.
به عنوان مثال:
اسنادی را که 1 ساعت قبل ایجاد شده اند حذف کنید اگر حالت p> برابر با TMP باشد < div class = "code-container" readability = "10"> db.eventlog.createIndex ( { ایجاد شده در span>: 1 } ، { expireAfterSeconds : 3600 ، partialFilterExpression : { ایالت span>: ‘TMP’ }}
)؛