How to do alphanumeric sort in mongoDB?

2019-02-24 10:12发布

问题:

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.

回答1:

Use collation with numericOrdering set to true in 3.4.

Something like

db.col.find({}).sort({"userID" : 1}).collation( { locale: "en_US", numericOrdering: true });


回答2:

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"}