Home > Back-end >  Get last document in MongoDB collection
Get last document in MongoDB collection

Time:07-10

I am trying to get the last document in a MongoDB collection. The following works in the Mongo shell:

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

Results in the last object like so:

{ "_id" : ObjectId("62c8817075c9400469b1fc3a"), "token" : "135e53ebb05aa2b6055513843cb8e0dca1", "createdAt" : ISODate("2022-07-08T19:11:44.730Z"), "updatedAt" : ISODate("2022-07-08T19:11:44.730Z"), "__v" : 0 }

But this does not work in my Express app:

 const last = FM_Model.find().limit(1).sort({$natural:-1})
 console.log('Last Token from MONGODB here -> ', last)

In the code above the console.log returns a very long object related to the collection itself, but not the document I want.

I have tried other variations but nothing has worked so far. If anyone can give me any ideas of what I am missing that would be great.

CodePudding user response:

.find() returns an array. But there is an better version with .findOne wich return the result or undefined

FM_Model.findOne({}, {}, { sort: { 'createdAt' : -1 } })

With -1 you get the oldest element, wich is the latest.

CodePudding user response:

Try

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

First revert the order then get the first one

  • Related