Reputation: 787
I have a collection like this.
{"userID" : "TR31"}
{"userID" : "TR1059"}
{"userID" : "TR1043"}
I want to sort this document in an ascending or descending order, I tried this way db.col.find({}).sort({"userID" : 1})
and db.col.find({}).sort({"userID" : -1})
but no luck.
Expected Result:
{"userID" : "TR31"}
{"userID" : "TR1043"}
{"userID" : "TR1059"}
Please advise. Thanks in advance.
Upvotes: 12
Views: 2717
Reputation: 75914
Use collation
with numericOrdering
set to true in 3.4.
Something like
db.col.find({}).sort({"userID" : 1}).collation( { locale: "en_US", numericOrdering: true });
Upvotes: 16
Reputation: 166
One approach is, you need to save using a prefix.
{"userID" : "TR0031"},
{"userID" : "TR1059"},
{"userID" : "TR1043"}
so that you can achieve as you expect.
{"userID" : "TR0031"},
{"userID" : "TR1043"},
{"userID" : "TR1059"}
Upvotes: 2