MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So finden Sie die letzte Aktualisierungs-/Einfüge-/Löschvorgangszeit in der Mongodb-Sammlung ohne Objekt-ID-Feld

Um es kurz zu machen:MongoDB hat eine flexible Schema. Fügen Sie einfach ein Datumsfeld hinzu. Da ältere Einträge es nicht haben, können sie nicht der letzte Eintrag sein.

Nennen wir dieses Feld mtime .

Nachdem wir also Ihrer Schemadefinition ein Datumsfeld hinzugefügt haben, generieren wir einen Index in absteigender Reihenfolge für das neue Feld:

db.yourCollction.createIndex({mtime:-1})

Jetzt ist es ganz einfach, die letzte Uhrzeit für eine Sammlung zu finden:

db.yourCollection.find({"mtime":{"$exists":true}}).sort({"mtime":-1}).limit(1)

Tun Sie dies für jede Sammlung. Wenn die obige Abfrage innerhalb des Zeitrahmens, den Sie zum Löschen einer Sammlung definiert haben, keinen Wert zurückgibt, löschen Sie sie einfach, da sie nicht geändert wurde, seit Sie das mtime-Feld eingeführt haben.

Nachdem Ihre Sammlungen bereinigt wurden, können Sie mtime entfernen Feld aus Ihrer Schemadefinition. Um es aus den Dokumenten zu entfernen, können Sie eine einfache Abfrage ausführen:

db.yourCollection.update(
  { "mtime":{ $exists:true} },
  { "$unset":{ "mtime":""} },
  { multi: true}
)