MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment trouver l'heure de la dernière opération de mise à jour/insertion/suppression sur la collection mongodb sans champ objectid

Pour faire court :MongoDB a un système flexible schéma. Ajoutez simplement un champ de date. Comme les anciennes entrées ne l'ont pas, elles ne peuvent pas être la dernière entrée.

Appelons ce champ mtime .

Ainsi après avoir ajouté un champ date à votre définition de schéma, nous générons un index par ordre décroissant sur le nouveau champ :

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

Il est maintenant facile de trouver le dernier mtime pour une collection :

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

Faites cela pour chaque collection. Lorsque la requête ci-dessus ne renvoie pas de valeur dans le délai que vous avez défini pour purger une collection, supprimez-la simplement, car elle n'a pas été modifiée depuis l'introduction du champ mtime.

Une fois vos collections nettoyées, vous pouvez supprimer le mtime champ de votre définition de schéma. Pour le supprimer des documents, vous pouvez exécuter une requête simple :

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