MongoDB按字段排序,带翻译

MongoDB按字段排序,带翻译,mongodb,sorting,multilingual,collation,Mongodb,Sorting,Multilingual,Collation,我正在处理具有以下结构的文档: { "_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" : [ { "l

我正在处理具有以下结构的文档:

{
"_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属性对文档进行排序,但正如您所看到的,title不是文本属性,因此我添加了以下索引:

TopicSchema.index(
  { 'title.name': 'text' },
  {
    collation: {
      locale:   'en',
      strength: 1,
     },
     language_override: 'lang',
   }
)
我的问题是,当我查询按
title
排序的文档时,我会以某种奇怪的顺序获取文档。我不知道是否可以指定要排序的“lang”,或者它只选择第一个(?)元素

在我看来,文档被排序是因为我在开始时得到了所有带有大写字母的文档(因此我在索引模式中添加了“collation”选项),但是当我仔细检查并注意到小写元素没有真正排序时


如果文档有3种语言,我不知道排序将如何工作,它将使用哪种语言进行排序?

您找到解决方案了吗?没有。我所做的是创建表单的额外字段:
title_s:{en:'Hello',es:'Hola'}
并通过一个钩子使它们保持同步。一点也不优雅,但它很管用。这些字段仅用于排序。