MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak znaleźć ostatnią aktualizację/wstawienie/usunięcie czasu operacji na kolekcji mongodb bez pola objectid?

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}
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nie można uzyskać dostępu do kolekcji z powłoki — SyntaxError:missing; przed oświadczeniem (powłoka)::1

  2. Jak włączyć SSL/TLS w kliencie Mongoid 3?

  3. Uzyskaj posortowane odrębne wartości za pomocą MongoTemplate

  4. Jak uruchomić Mongo DB z systemu Windows?

  5. Jaka jest różnica między metodami insert(), insertOne() i insertMany()?