如何在mongodb中使用聚合实现不区分大小写的排序(3.4)

SHI*_*RMA 3 sorting mongodb aggregation-framework

我正在尝试在 MongoDB 中实现排序。但我遇到一个问题,我的排序首先包括大写字母 AZ 文本,然后是小写字母。我不想要他们。我希望排序独立于案例。这是我的查询,

var partnerCollection = [
      from: "courses",
      localField: "_id",
      foreignField: "partnerId",
      as: "courses"
    } },
    {
        $project:
        {
            "_id":1,
            "partnerName":1,
            "phone":1,
            "email":1,
            "courses.courseName": 1,
            "courses.courseType":1,
        }
    },
    {
        $match: findUserDataCondition
    },
    { $sort: { "partnerName" : 1 } },
    { $skip: start },
    { $limit: length }
];
Run Code Online (Sandbox Code Playgroud)

如果我用 PartnerName 排序,我得到的结果为 ABC, DEF, EFG , bcd, cde

我的预期结果是 ABC、bcd、cde、DEF、EFG。请帮助我解决这个问题

Val*_*jon 7

幸运的是,自 MongoDb 以来,引入了排序v3.4选项来指定特定于语言的字符串比较规则:

db.partnerCollection.aggregate([
  ...
],
{
  collation: {
      locale : "en"
  }
})
Run Code Online (Sandbox Code Playgroud)

注意:如果还指定了caseFirst = "upper"参数,则大写字符串将排在小写之前。

与 caseFirst = "upper" 的排序规则