如何为 MongoDB collection 存储混合内容设置排序规则?
How to set up collation for MongoDB collection storing mixed content?
我正在使用 MongoDB 4.4 企业版。
我有一个 collection 存储混合语言内容。更准确地说,一些字段包含英文和阿拉伯文文本,这些字段是描述或名称或标题等。
我的问题是我应该如何正确设置排序规则?我的意思是,我知道我可以在创建时为每个 collection 指定排序规则,但那是针对一个特定的语言环境,例如“ar”或“en”。但我两者都需要!
我的理解是,在这种情况下,我需要在操作层面上这样做,所以它是这样的:
db.items.find({"field": "value"}).sort({"field" : -1}).collation({"locale": "ar"})
但是,这需要进行很多更改。难道没有更好的办法吗?我能否以某种方式让所有 collection 都“全局”支持阿拉伯语和英语?
编辑:
只是一些说明。我只需要这个:
- 人们按关键字搜索
- 该关键字可以是英语或阿拉伯语
- 我想查找标题、描述或名称中包含关键字的() 个文档。这是一个正则表达式搜索。
这可能根本不需要特殊的排序规则设置,对吧?我刚刚对其进行了测试,它似乎适用于默认排序规则。
很遗憾,这不支持,来自 docs
You cannot specify multiple collations for an operation. For example, you cannot specify different collations per field, or if performing a find with a sort, you cannot use one collation for the find and another for the sort.
对此并没有真正的“一刀切”,具体取决于您的需要。我个人会做的是预处理数据以满足我的需要。
我正在使用 MongoDB 4.4 企业版。
我有一个 collection 存储混合语言内容。更准确地说,一些字段包含英文和阿拉伯文文本,这些字段是描述或名称或标题等。
我的问题是我应该如何正确设置排序规则?我的意思是,我知道我可以在创建时为每个 collection 指定排序规则,但那是针对一个特定的语言环境,例如“ar”或“en”。但我两者都需要!
我的理解是,在这种情况下,我需要在操作层面上这样做,所以它是这样的:
db.items.find({"field": "value"}).sort({"field" : -1}).collation({"locale": "ar"})
但是,这需要进行很多更改。难道没有更好的办法吗?我能否以某种方式让所有 collection 都“全局”支持阿拉伯语和英语?
编辑:
只是一些说明。我只需要这个:
- 人们按关键字搜索
- 该关键字可以是英语或阿拉伯语
- 我想查找标题、描述或名称中包含关键字的() 个文档。这是一个正则表达式搜索。
这可能根本不需要特殊的排序规则设置,对吧?我刚刚对其进行了测试,它似乎适用于默认排序规则。
很遗憾,这不支持,来自 docs
You cannot specify multiple collations for an operation. For example, you cannot specify different collations per field, or if performing a find with a sort, you cannot use one collation for the find and another for the sort.
对此并没有真正的“一刀切”,具体取决于您的需要。我个人会做的是预处理数据以满足我的需要。