【问题标题】:Case-Insensitive Sorting with MongoDB Query使用 MongoDB 查询进行不区分大小写的排序
【发布时间】:2020-06-08 20:18:00
【问题描述】:

我在我的应用程序中使用“MongoDB-3.6.17”和“mongo-java-driver-3.6.4”。 以下是 MongoDB 集合中的文档:

{ "_id" : ObjectId("5323850fa89de4a9f691dacf"), "name" : "PQR" }
{ "_id" : ObjectId("53238511a89de4a9f691dad0"), "name" : "abc" }
{ "_id" : ObjectId("53238515a89de4a9f691dad1"), "name" : "ABC" }
{ "_id" : ObjectId("53238522a89de4a9f691dad2"), "name" : "xyz" }
{ "_id" : ObjectId("5323852ea89de4a9f691dad3"), "name" : "XYZ" }
{ "_id" : ObjectId("5323855ea89de4a9f691dad4"), "name" : "pqr" }

然后我已经按名称排序查询了:

db.collection.find().sort({name:1});

结果如下:

{ "_id" : ObjectId("53238515a89de4a9f691dad1"), "name" : "ABC" }
{ "_id" : ObjectId("5323850fa89de4a9f691dacf"), "name" : "PQR" }
{ "_id" : ObjectId("5323852ea89de4a9f691dad3"), "name" : "XYZ" }
{ "_id" : ObjectId("53238511a89de4a9f691dad0"), "name" : "abc" }
{ "_id" : ObjectId("5323855ea89de4a9f691dad4"), "name" : "pqr" }
{ "_id" : ObjectId("53238522a89de4a9f691dad2"), "name" : "xyz" }

默认情况下,MongoDB 支持区分大小写的排序。 我们如何使用 MongoDB 查询获得不区分大小写的排序结果。

预期结果:

{ "_id" : ObjectId("53238515a89de4a9f691dad1"), "name" : "ABC" }
{ "_id" : ObjectId("53238511a89de4a9f691dad0"), "name" : "abc" }
{ "_id" : ObjectId("5323850fa89de4a9f691dacf"), "name" : "PQR" }
{ "_id" : ObjectId("5323855ea89de4a9f691dad4"), "name" : "pqr" }
{ "_id" : ObjectId("5323852ea89de4a9f691dad3"), "name" : "XYZ" }
{ "_id" : ObjectId("53238522a89de4a9f691dad2"), "name" : "xyz" } 

请帮助我了解 MongoDB 中不区分大小写的排序。

谢谢。

问候, 拉姆

【问题讨论】:

标签: mongodb-query


【解决方案1】:

使用 MongoDB 聚合框架

db.collection.aggregate([ { "$project": { "name": 1, "lowername": { "$toLower": "$name" } }}, { "$sort": { "lowername": 1 } } ])

参考 - http://codingpajamas.github.io/2015/05/14/sorting-mongodb-case-insensitive

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 2019-01-31
    • 2010-12-24
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多