MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come trovare l'ora dell'ultimo aggiornamento/inserimento/eliminazione sulla raccolta mongodb senza campo objectid

Per farla breve:MongoDB ha un flessibile schema. Basta aggiungere un campo data. Poiché le voci più vecchie non lo hanno, non possono essere l'ultima voce.

Chiamiamo quel campo mtime .

Quindi, dopo aver aggiunto un campo data alla definizione dello schema, generiamo un indice in ordine decrescente sul nuovo campo:

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

Trovare l'ultima ora per una raccolta ora è facile:

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

Fallo per ogni collezione. Quando la query precedente non restituisce un valore entro l'intervallo di tempo definito per l'eliminazione di una raccolta, eliminalo semplicemente, poiché non è stato modificato da quando hai introdotto il campo mtime.

Dopo che le tue raccolte sono state ripulite, puoi rimuovere mtime campo dalla definizione dello schema. Per rimuoverlo dai documenti, puoi eseguire una semplice query:

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