mongodb - MongoDB 按带有翻译的字段排序
问题描述
我正在处理具有以下结构的文档:
{
"_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
}
我想按标题属性对文档进行排序,但正如您所见,标题不是文本属性,所以我添加了以下索引:
TopicSchema.index(
{ 'title.name': 'text' },
{
collation: {
locale: 'en',
strength: 1,
},
language_override: 'lang',
}
)
我的问题是,当我查询按排序的文档时,title
我会以某种奇怪的顺序获取文档。我不知道我是否可以指定要排序的“语言”,或者它只是选择第一个(?)元素。
在我看来,文档是排序的,因为我得到了所有开头都是大写字母的文档(所以我在索引模式中添加了 'collation' 选项),但是当我仔细检查并注意到小写元素并没有真正排序时.
如果文档有 3 种语言,我对排序将如何工作感到困惑,它将使用哪种语言进行排序?
解决方案
推荐阅读
- php - Laravel Collections:提取指定的键集并将不存在的键设置为默认值
- css - 什么是 Sass %(百分比)选择器?
- android - 使用 MockK coVerify 时,未调用方法
- python - groupby 中两个函数的区别
- mysql - 运行优化命令时,它会重建表,那么数据库中需要多少额外空间?
- html - 如何使边框和 z-index 保持到过渡结束?
- c# - 循环故障时,随机积分器仅在第一次工作
- javascript - MSIToken 中的 Azure 日期解析问题
- ios - 关于如何在与 CloudKit 同步的 Core Data 中存储 mp3 和图像文件的建议
- php - 如何在 WooCommerce 4+ 中为产品添加自定义库存状态