How to sort results by string length on MongoDB

2020-06-03 00:58发布

问题:

I can do it easily on mysql

select * from TABLE order by length(FIELD) asc

How can I do it on MongoDB?

回答1:

MongoDB 3.4 introduces the $strLenCP aggregation operator that finally supports this. An example:

db.collection.aggregate(
    [
        {$project: {
            "field": 1,
            "field_length": { $strLenCP: "$field" }
        }},
        {$sort: {"field_length": -1}},
        {$project: {"field_length": 0}},
    ]
)


回答2:

suppose your schema is something like:

example = {_id: "XXX", text: "YYY"}

db.example.aggregate([
 {$project : {text : 1, length : {$size : "$text"}}}, 
 {$sort : {length : 1}}
]);

I think this will do the job, but only for mongo 2.6 and above