Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP对带有外来字符的MongoDb文档进行排序_Php_Mongodb_Sorting - Fatal编程技术网

使用PHP对带有外来字符的MongoDb文档进行排序

使用PHP对带有外来字符的MongoDb文档进行排序,php,mongodb,sorting,Php,Mongodb,Sorting,我有一个数据集,其中包含一个列表,其中列出了每种语言所使用的语言 e、 g 德国 荷兰 斯洛文尼亚 Česky Б 问题是,当我对语言进行排序时,我会得到如上所示的列表。无论多么自然 Б Česky 德国 荷兰 斯洛文尼亚 你建议怎么做 一个是创建一个排序字段,但我有另一个包含15000个文档的集合,在这个集合上创建排序索引需要做大量的工作。MongoDB没有基于区域设置的排序,而是使用Unicode 码点排序。这适用于标准英语字母表,但显然不适用于其他字母表。正在跟踪此问题,可以找到解

我有一个数据集,其中包含一个列表,其中列出了每种语言所使用的语言

e、 g

  • 德国
  • 荷兰
  • 斯洛文尼亚
  • Česky
  • Б
问题是,当我对语言进行排序时,我会得到如上所示的列表。无论多么自然

  • Б
  • Česky
  • 德国
  • 荷兰
  • 斯洛文尼亚
你建议怎么做


一个是创建一个排序字段,但我有另一个包含15000个文档的集合,在这个集合上创建排序索引需要做大量的工作。

MongoDB没有基于区域设置的排序,而是使用Unicode 码点排序。这适用于标准英语字母表,但显然不适用于其他字母表。正在跟踪此问题,可以找到解决方法

我的答案取自谷歌集团发布的关于瑞典信件分类的问题。如果您想了解更多有关Unicode排序规则的信息,可以查看

建议将您的数据拉入一种能够正确处理Unicode排序的语言,并从中应用排序字段。或者,语言列表通常还包括一个区域设置代码(例如英语为EN),这就是它们的排序方式

使用区域设置代码列表,您的顺序将按照您的示例正确:

  • 斯洛伐克语-保加利亚语
  • Česky(我猜是捷克语/Česka)-CS
  • 德国
  • 荷兰
  • 斯洛文尼亚-SK

  • MongoDB没有基于区域设置的排序,而是使用Unicode 码点排序。这适用于标准英语字母表,但显然不适用于其他字母表。正在跟踪此问题,可以找到解决方法

    我的答案取自谷歌集团发布的关于瑞典信件分类的问题。如果您想了解更多有关Unicode排序规则的信息,可以查看

    建议将您的数据拉入一种能够正确处理Unicode排序的语言,并从中应用排序字段。或者,语言列表通常还包括一个区域设置代码(例如英语为EN),这就是它们的排序方式

    使用区域设置代码列表,您的顺序将按照您的示例正确:

  • 斯洛伐克语-保加利亚语
  • Česky(我猜是捷克语/Česka)-CS
  • 德国
  • 荷兰
  • 斯洛文尼亚-SK

  • 我在芬兰语中使用了这个配置,在这个链接中你可以找到关于它的信息

    collation : { locale: "country"}
    //example query filter by "field"
    db.items.find({"field": "value"}).sort({"field" : -1}).collation({"locale": "pl"})
    

    我在芬兰语中使用了这个配置,在这个链接中你可以找到关于它的信息

    collation : { locale: "country"}
    //example query filter by "field"
    db.items.find({"field": "value"}).sort({"field" : -1}).collation({"locale": "pl"})
    

    我将使用区域设置代码的方法,对于15K+文档,我将查看是否能够按照您提供的链接中的描述修补数据库引擎。如果您不介意,请告诉我它是如何运行的,我非常感兴趣。对于15K+文档,我将使用区域设置代码的方法,我会看看是否能按照您提供的链接中的描述修补数据库引擎。如果您不介意的话,请告诉我进展如何,我很感兴趣。