MongoDB сортировка по полю с переводами - PullRequest
0 голосов
/ 05 июля 2018

Я работаю с документами, имеющими следующую структуру:

{
"_id" : ObjectId("5b28d08cd7a04b02b31d4543"),
"updated_at" : ISODate("2018-06-19T09:44:44.957Z"),
"created_at" : ISODate("2018-06-19T09:44:44.957Z"),
"created_by" : ObjectId("5b051b6ff4f98d1681835615"),
"title" : [ 
    {
        "lang" : "es",
        "name" : "Hola",
        "_id" : ObjectId("5b28d08cd7a04b02b31d4544")
    },
    {
        "lang" : "en",
        "name" : "Hello",
        "_id" : ObjectId("5b28d08cd7a04b02b31d4545")
    }
],
"admins" : [],
"active" : true,
"__v" : 0
}

Я бы хотел отсортировать документы по свойству title, но, как вы видите, заголовок не является свойством text, поэтому я добавил следующий индекс:

TopicSchema.index(
  { 'title.name': 'text' },
  {
    collation: {
      locale:   'en',
      strength: 1,
     },
     language_override: 'lang',
   }
)

Моя проблема в том, что когда я запрашиваю документы, отсортированные по title, я получаю документы в каком-то странном порядке. Я не знаю, могу ли я указать «lang», по которому я хочу отсортировать, или он просто выбирает первый (?) Элемент.

Мне показалось, что документы были отсортированы, потому что я получил все документы с заглавными буквами в начале (поэтому я добавил опцию 'collation' в схему индекса), но когда я проверил внимательно и заметил, что строчные элементы не очень отсортировано.

Меня смущает, как будет работать сортировка, если в документе 3 языка, какой язык он будет использовать для сортировки?

...