This one works for me.
`Post.find().sort({postedon: -1}).find(function (err, sortedposts){
if (err)
return res.status(500).send({ message: "No Posts." });
res.status(200).send({sortedposts : sortedposts});
});`
ES6 solution with Koa.
async recent() {
data = await ReadSchema.find({}, { sort: 'created_at' });
ctx.body = data;
}
See if this helps > How to sort in mongoose?
Also read this > http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
You can also sort by the _id
field. For example, to get the most recent record, you can do,
const mostRecentRecord = await db.collection.findOne().sort({ _id: -1 });
It's much quicker too, because I'm more than willing to bet that your date
field is not indexed.
The correct answer is:
Blah.find({}).sort({date: -1}).execFind(function(err,docs){
});
Post.find().sort({date:-1}, function(err, posts){
});
Should work as well
EDIT:
You can also try using this if you get the error sort() only takes 1 Argument
:
Post.find({}, {
'_id': 0, // select keys to return here
}, {sort: '-date'}, function(err, posts) {
// use it here
});
Been dealing with this issue today using Mongoose 3.5(.2) and none of the answers quite helped me solve this issue. The following code snippet does the trick
Post.find().sort('-posted').find(function (err, posts) {
// user posts array
});
You can send any standard parameters you need to find()
(e.g. where clauses and return fields) but no callback. Without a callback it returns a Query object which you chain sort()
on. You need to call find()
again (with or without more parameters -- shouldn't need any for efficiency reasons) which will allow you to get the result set in your callback.
I do this:
Data.find( { $query: { user: req.user }, $orderby: { dateAdded: -1 } } function ( results ) {
...
})
This will show the most recent things first.
Short solution:
const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }
Room.find(query, projection, options).exec(function(err, docs) { ... });
Source: Stackoverflow.com