MongoDB: How to get the last updated timestamp of the last updated document in a collection

void picture void · Dec 6, 2017 · Viewed 22.9k times · Source

Is there a simple OR elegant method (or query that I can write) to retrieve the last updated timestamp (of the last updated document) in a collection. I can write a query like this to find the last inserted document

db.collection.find().limit(1).sort({$natural:-1})

but I need information about the last updated document (it could be an insert or an update).

I know that one way is to query the oplog collection for the last record from a collection. But it seems like an expensive operation given the fact that oplog could be of very large size (also not trustworthy as it is a capped collection). Is there a better way to do this?

Thanks!

Answer

Anirudh Bagri picture Anirudh Bagri · Dec 6, 2017

You could get the last insert time same way you mentioned in the question:

db.collection.find().sort({'_id': -1}).limit(1) 

But, There isn't any good way to see the last update/delete time. But, If you are using replica sets you could get that from the oplog.

Or, you could add new field in document as 'lastModified'. You can also checkout collection-hooks. I hope this will help