Мне нужно удалить данные старше 30 дней, но у меня есть поле _id, без полей даты. Я знаю о преобразовании временных меток, но я не уверен, как использовать его в скрипте.
вы можете получить дату из вашего objectId с помощью ObjectId.getTimestamp() - personfelix  schedule03.07.2017
comment
да, но я пишу javascript для этого, как мне взять идентификатор и найти старше 30 дней и удалить этот документ
- personAayushi  schedule03.07.2017
comment
db.collection.remove(function() { return this._id.getTimestamp() < new Date( Date.now() - ( 1000 * 60 * 60 * 24 * 30 ) ) }) удаляет по временной метке значения ObjectId в _id.
- personNeil Lunn  schedule03.07.2017
comment
@ Ааюши, тебе нужно выполнить «правило», основанное на этом? Я имею в виду, вы периодически удаляли все данные старше 30 дней?
- personDaniele Tassone  schedule03.07.2017
comment
Да, Даниил, я нашел это решение, чтобы сделать это на основе поля _id
- personAayushi  schedule04.07.2017
comment
@Aayushi, если вам нужно выполнять периодическое удаление, учитывайте коллекции TTL, которые используются именно для этой цели.
- personDaniele Tassone  schedule04.07.2017
comment
Привет, Даниэле, я нашел одну функцию, которая преобразует _id в dateTime по мере необходимости. Когда мне нужно применить запрос к полю _id, я передаю это значение функции, она будет преобразована в дату и предоставит требуемый результат.
- personAayushi  schedule04.07.2017
@Aayushi хорошо, если бы вы периодически выполняли операцию удаления, было бы лучше создать коллекцию TTL. db.log_events.createIndex({createdAt: 1}, {expireAfterSeconds: 3600}) и mongodb автоматически удалит документы для вас!
- personDaniele Tassone  schedule04.07.2017
comment
Верно, Даниэле, но здесь мы не можем использовать TTL, потому что нам не нужно периодически удалять данные, мы будем использовать наш скрипт, когда это необходимо, например, чтобы справиться с нехваткой места.
- personAayushi  schedule05.07.2017
ObjectId.getTimestamp()
- person felix   schedule 03.07.2017db.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