Mongodb сортировка без учета регистра - PullRequest
0 голосов
/ 25 августа 2018

Я очень сложен в одном проекте в nodejs (экспресс) с mongodb в качестве базы данных.Когда я получаю все данные с помощью sort (), он возвращает данные неверным образом, поэтому есть способ получить их должным образом отформатировать, как я ожидаю, как показано ниже: Если у нас есть три записи в БД:

---------------------
id  | Name |  aga
---------------------
1   | atul | 21
---------------------
2   | Bhavik | 22
---------------------
3   | Jay | 25

Чтоя получаю в настоящее время:

2,3,1 серии данных

То, что я ожидаю, это прийти: 1,2,3

Это значит игнорироватьрегистр при сортировке возможен без добавления нового столбца.

Ответы [ 3 ]

0 голосов
/ 14 марта 2019

Вы можете передать collation: { locale: 'en' } непосредственно в параметре options метода find:

db.collection.find({ ...query }, {
  sort: ...,
  limit: ...,
  collation: { locale: 'en' }
}
0 голосов
/ 07 июня 2019

Создайте коллекцию с параметрами сортировки по умолчанию. Таким образом, вы можете заказать любое свойство с учетом регистра.

db.createCollection("collection_name", { collation: { locale: 'en_US', strength: 2 } } )

db.getCollection('collection_name').find({}).sort( { 'property_name': -1 } )

Дополнительная информация:https://docs.mongodb.com/manual/core/index-case-insensitive/

0 голосов
/ 25 августа 2018

Вам необходимо использовать collation здесь с locale: "en"

db.collection.find({}).collation({ locale: "en" }).sort({ name: 1 })

Так для приведенного ниже документа

{ "_id" : 1, "name" : "Bhavik" }
{ "_id" : 2, "name" : "Jay" }
{ "_id" : 3, "name" : "atul" }

Вы получите

{ "_id" : 3, "name" : "atul" }
{ "_id" : 1, "name" : "Bhavik" }
{ "_id" : 2, "name" : "Jay" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...