Estoy tratando de obtener el último documento en una colección de MongoDB. Lo siguiente funciona en el shell de Mongo:
db.collection.find().limit(1).sort({$natural:-1})Resultados en el último objeto así:
{ "_id" : ObjectId("62c8817075c9400469b1fc3a"), "token" : "135e53ebb05aa2b6055513843cb8e0dca1", "createdAt" : ISODate("2022-07-08T19:11:44.730Z"), "updatedAt" : ISODate("2022-07-08T19:11:44.730Z"), "__v" : 0 }Pero esto no funciona en mi aplicación Express:
const last = FM_Model.find().limit(1).sort({$natural:-1}) console.log('Last Token from MONGODB here -> ', last)En el código anterior, console.log devuelve un objeto muy largo relacionado con la colección en sí, pero no con el documento que quiero.
He probado otras variaciones pero nada ha funcionado hasta ahora. Si alguien me puede dar alguna idea de lo que me estoy perdiendo sería genial.
Probar
db.colección.find().sort({'_id':-1}).límite(1)
Primero revertir el orden y luego obtener el primero
.find() devuelve una matriz. Pero hay una versión mejor con .findOne que devuelve el resultado o undefined
FM_Model.findOne({}, {}, { sort: { 'createdAt' : -1 } }) Con -1 obtienes el elemento más antiguo, que es el más reciente.