Очистить документы по дате из значения ObjectId

Мне нужно удалить данные старше 30 дней, но у меня есть поле _id, без полей даты. Я знаю о преобразовании временных меток, но я не уверен, как использовать его в скрипте.


person Aayushi    schedule 03.07.2017    source источник
comment
вы можете получить дату из вашего objectId с помощью ObjectId.getTimestamp()   -  person felix    schedule 03.07.2017
comment
да, но я пишу javascript для этого, как мне взять идентификатор и найти старше 30 дней и удалить этот документ   -  person Aayushi    schedule 03.07.2017
comment
db.collection.remove(function() { return this._id.getTimestamp() < new Date( Date.now() - ( 1000 * 60 * 60 * 24 * 30 ) ) }) удаляет по временной метке значения ObjectId в _id.   -  person Neil Lunn    schedule 03.07.2017
comment
@ Ааюши, тебе нужно выполнить «правило», основанное на этом? Я имею в виду, вы периодически удаляли все данные старше 30 дней?   -  person Daniele Tassone    schedule 03.07.2017
comment
Да, Даниил, я нашел это решение, чтобы сделать это на основе поля _id   -  person Aayushi    schedule 04.07.2017
comment
@Aayushi, если вам нужно выполнять периодическое удаление, учитывайте коллекции TTL, которые используются именно для этой цели.   -  person Daniele Tassone    schedule 04.07.2017
comment
Привет, Даниэле, я нашел одну функцию, которая преобразует _id в dateTime по мере необходимости. Когда мне нужно применить запрос к полю _id, я передаю это значение функции, она будет преобразована в дату и предоставит требуемый результат.   -  person Aayushi    schedule 04.07.2017
comment
db.test.remove({_id: {$lt:objectIdWithTimestamp(deletionDate)}});   -  person Aayushi    schedule 04.07.2017
comment
@Aayushi хорошо, если бы вы периодически выполняли операцию удаления, было бы лучше создать коллекцию TTL. db.log_events.createIndex({createdAt: 1}, {expireAfterSeconds: 3600}) и mongodb автоматически удалит документы для вас!   -  person Daniele Tassone    schedule 04.07.2017
comment
Верно, Даниэле, но здесь мы не можем использовать TTL, потому что нам не нужно периодически удалять данные, мы будем использовать наш скрипт, когда это необходимо, например, чтобы справиться с нехваткой места.   -  person Aayushi    schedule 05.07.2017