Para encurtar a história:o MongoDB tem um flexível esquema. Basta adicionar um campo de data. Como as entradas mais antigas não o possuem, elas não podem ser a última entrada.
Vamos chamar esse campo de
mtime
. Então, depois de adicionar um campo de data à sua definição de esquema, geramos um índice em ordem decrescente no novo campo:
db.yourCollction.createIndex({mtime:-1})
Encontrar o último mtime para uma coleção agora é fácil:
db.yourCollection.find({"mtime":{"$exists":true}}).sort({"mtime":-1}).limit(1)
Faça isso para cada coleção. Quando a consulta acima não retornar um valor dentro do prazo que você definiu para limpar uma coleção, simplesmente descarte-o, pois ele não foi modificado desde que você introduziu o campo mtime.
Depois que suas coleções forem limpas, você poderá remover o
mtime
campo da sua definição de esquema. Para removê-lo dos documentos, você pode executar uma consulta simples:db.yourCollection.update(
{ "mtime":{ $exists:true} },
{ "$unset":{ "mtime":""} },
{ multi: true}
)