roshan
roshan

Reputation: 2510

mongoose: Sorting by id

mongo db reorders the documents when ever a document is updated. I dint want this to happen so I found that using order by _id would return the documents in consistent order. But now I am not able to sort. Below is my find query which finds posts created by a particular user and I am trying to sort by _id. Code:

app.get('/posts/:user_id',function(req,res){

posts.find({
    'creator.user_id':req.params.user_id
},[],{ sort: { '_id': -1 } },function(err,userpost){
    if(err)
        res.send(err);
    res.json(userpost);


})

});

Upvotes: 13

Views: 18083

Answers (1)

Gergo Erdosi
Gergo Erdosi

Reputation: 42058

The second parameter is for the fields to select. You need to add options to the third parameter:

posts.find({'creator.user_id': req.params.user_id}, null, {sort: {'_id': -1}}, function(err,userpost) {
    if(err)
        res.send(err);
    res.json(userpost);
});

Alternatively you can use the sort() function:

posts.find({'creator.user_id': req.params.user_id}).sort({'_id': -1}).exec(function(err,userpost) {
    if(err)
        res.send(err);
    res.json(userpost);
});

You can find more examples in the documentation.

Upvotes: 20

Related Questions