Как реализовать сортировку без учета регистра с помощью агрегата в mongodb (3.4) - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь реализовать сортировку в MongoDB. Но у меня возникает проблема, что мой вид сначала включает заглавные буквы А-Я, а затем строчные буквы. Я не хочу их. Я хочу, чтобы вид был независимым от случая. Вот мой запрос,

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 }
];

Если я сортирую с partnerName, я получаю результат как AB C, DEF, EFG, bcd, cde

Мой ожидаемый результат - AB C, bcd, cde, DEF, EFG. Пожалуйста, помогите мне разобраться в этом

1 Ответ

1 голос
/ 09 апреля 2020

К счастью, поскольку MongoDb v3.4 была введена опция параметров сортировки , чтобы указать языковые c правила для сравнения строк:

db.partnerCollection.aggregate([
  ...
],
{
  collation: {
      locale : "en"
  }
})

Примечание: Если вы также укажете параметр caseFirst = "upper", строка с верхним регистром будет упорядочена перед строчными.

Collation with caseFirst =

...