Search code examples
javascriptnode.jsmongodbexpressmongoose

Get last document in MongoDB collection


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.


Solution

  • .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.