Senthur Deva
Senthur Deva

Reputation: 787

How to do alphanumeric sort in mongoDB?

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

Answers (2)

s7vr
s7vr

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

solomon abel
solomon abel

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

Related Questions