通过忽略Mongodb中的案例来对文档进行排序



我们使用的是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 })

最新更新