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);
})
});
So, basically, the id getter returns a string representation of the document's _id (which is added to all MongoDB documents by default and have a default type of ObjectId ). Regarding what's better for referencing, that depends entirely on the context (i.e., do you want an ObjectId or a string ).
sort() takes an object as parameter where the values are 1 or -1. Use -1 for descending order and 1 for ascending.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With