Krótko mówiąc:MongoDB ma elastyczny schemat. Po prostu dodaj pole daty. Ponieważ starsze wpisy go nie mają, nie mogą być ostatnim wpisem.
Nazwijmy to pole mtime
.
Tak więc po dodaniu pola daty do definicji schematu generujemy indeks w porządku malejącym dla nowego pola:
db.yourCollction.createIndex({mtime:-1})
Znalezienie ostatniego czasu dla kolekcji jest teraz łatwe:
db.yourCollection.find({"mtime":{"$exists":true}}).sort({"mtime":-1}).limit(1)
Zrób to dla każdej kolekcji. Jeśli powyższe zapytanie nie zwróci wartości w ramach czasowych, które zdefiniowałeś do czyszczenia kolekcji, po prostu je usuń, ponieważ nie zostało zmodyfikowane od czasu wprowadzenia pola mtime.
Po oczyszczeniu kolekcji możesz usunąć mtime
pole z definicji schematu. Aby usunąć go z dokumentów, możesz uruchomić proste zapytanie:
db.yourCollection.update(
{ "mtime":{ $exists:true} },
{ "$unset":{ "mtime":""} },
{ multi: true}
)