Loourr Loourr - 3 months ago 17
Javascript Question

mongoose: find most recent document

I have mongoose schema which has a day attribute which is just

Math.floor((new Date()).getTime() / (24 * 3600 * 1000))


and I want to find the data for the last day entered so say today is
16085
then I want to find the last day entered. Or another way of saying this would be. What is the document with a
day
attribute less then
16085
but greater then all other documents where
day
is also less then
16085
.

or another way

What is the maximal element of the set of all documents with a
day
attribute less then
16085


Other then iterating over all of my documents, how could I do this?

Answer

In the shell it would be:

db.test.find({day: {$lt: 16085}}).sort({day: -1}).limit(1)

Which finds all the docs where day is less than 16085, sorts them on day descending, and then takes the first one.

In Mongoose it would be something like:

MyModel.find({day: {$lt: 16085}}).sort({day: -1}).limit(1).exec((err, docs) => { ... });
Comments