How to retrieve last update time of each document in MongoDB?

Sadish Kumar picture Sadish Kumar · Dec 20, 2012 · Viewed 39.3k times · Source

I would like to know if there is a way to get the last update/modify time of data (i.e documents) in a collection in MongoDB. More clearly, I want to make a query to retrieve all documents updated after a particular time.

Is there any possible ways to retrieve this last modified timestamp in MongoDB?

Note: For newly created documents, I know that we can retrieve the timestamp from the objectId, but for an update, the id is going to be same. Does MongoDB store the last update time for each document anywhere?

I am using morphia as the java driver, so if there is any possible way from morphia, please let me know.

Answer

Ramesh picture Ramesh · Dec 20, 2012

You need to capture last update time yourself.

For my application, I keep an AuditTrail object, which captures AuditEvents. These events occur on any insert, update, or delete of an object (delete is virtual in my system, just setting a flag).

For each AuditEvent, I keep track of the date, authenticated user, db action, and a description filled in by the application. This is implemented in PersistentObject, so it is automatically called for any database action of any object saved in Mongo.

This actual took very little time to implement, but provides both the ability to get the last update time, and also any other information that you may need for security and customer support for everything in Mongo.