افزودن TTL در MongoDb توسط C#

TTL ( time to leave )

در MongoDb قادر خواهید بود که یک TTL ثبت نمایید به این صورت که سندهای (document)  ذخیره شده را بعد از مدت زمان مشخصی حذف نمایید . یکی از کاربرد های این کار برای مثال زمانی هست که سند های ذخیره شده باید بعد از مدت زمان مشخصی مجدد در دیتابیس دخیره شود به دلایل تغییراتی که در داده های به وجود آمده است .

برای انجام این کار ابتدا باید یک ایندکس بر روی یک از فیلد ها مدل مورد نظر خودتان که از نوع DateTime است تعییر نمایید به صورت زیر :

Student st = new Student()
            {
                Name = "osman",
                Family = "rahimi",
                Age = 25,
               expireAt = DateTime.Now.AddMinutes(5)
            };

 

 collection.Indexes.CreateOne(Builders<Student>.IndexKeys.Ascending("expireAt "),
                new CreateIndexOptions { ExpireAfter = new TimeSpan(0, 0, 60) });

 در صورتی که مدل شما دارای فیلدی همانند  از نوع DateTime نیست می توان ابتدا مدل مورد نظر خود را تبدیل به BsonDocument کرده و سپس یک BsonElement به آن اضافه نمایید .

List<BsonDocument> bsonList = new List<BsonDocument>();

            foreach (var item in students)
            {
                var newItem = item.ToBsonDocument();
                newItem.Add(new BsonElement("expireAt", DateTime.Now.AddMinutes(2)));
                bsonList.Add(newItem);
            }

 * - در صورتی که فیلدی که روی آن ایندکس انجام شده است  حاوی مقدار Date نباشد سند ها هیچ وقت حذف نخواهند شد .


توسط : عثمان رحیمی  2 ماه قبل ، سه شنبه 2 آبان 1396 ساعت 17:11  0  105

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط