我们使用的是Mongodb的旧版本,所以排序不起作用,我们也不使用索引。文档保存在MongoDB集合中:
{ "_id" : ObjectId("5223850fa89de4a9f691dacf"), "name" : "B" }
{ "_id" : ObjectId("52238511a89de4a9f691dad0"), "name" : "c" }
{ "_id" : ObjectId("52238515a89de4a9f691dad1"), "name" : "A" }
{ "_id" : ObjectId("52238522a89de4a9f691dad2"), "name" : "z" }
{ "_id" : ObjectId("5223852ea89de4a9f691dad3"), "name" : "X" }
我正在查询,按名称排序:
db.collection.find().sort({name:1});
结果是:
{ "_id" : ObjectId("52238515a89de4a9f691dad1"), "name" : "A" }
{ "_id" : ObjectId("5223850fa89de4a9f691dacf"), "name" : "B" }
{ "_id" : ObjectId("5223852ea89de4a9f691dad3"), "name" : "X" }
{ "_id" : ObjectId("52238511a89de4a9f691dad0"), "name" : "c" }
{ "_id" : ObjectId("52238522a89de4a9f691dad2"), "name" : "z" }
提前感谢您的帮助。
演示-https://mongoplayground.net/p/OkphOyxTMo2
使用$toLower将名称转换为caseInsensitiveName
中的小写,并对其执行$sort
。
将字符串转换为小写,返回结果。
您也可以使用$toUpper。
db.collection.aggregate([
{
$project: {
name: 1,
caseInsensitiveName: {
$toLower: "$name"
}
}
},
{
$sort: {
caseInsensitiveName: 1
}
}
])
我认为您可以使用排序规则:
db.collection.find({}).collation({strength: 1}).sort({ name: 1 })