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:
Try
db.collection.find().sort({'_id':-1}).limit(1)
First revert the order then get the first one
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.