8

我需要对集​​合中的一个字段进行字母数字排序。该字段包含染色体信息。

Chr1, 
Chr2,
..,
..,
..,
Chr10,
Chr11,
..,
..,
ChrX,
ChrY

我没有按此顺序获取值,而是将它们放入

Chr1, 
Chr11

这是一个常见问题,想知道 MongoDB 是否有针对这种类型的内置解决方案,或者我们应该像通常在 Oracle 中那样破解它。如果没有内置解决方案,那么获得这种排序的最佳方法是什么?自然排序是一个可接受的解决方案,但我已经将它应用到另一个领域。

任何帮助将不胜感激。

4

3 回答 3

5

MongoDB 没有内置的按字母数字排序数据的方法。但是,当您的所有数据都有一个带有与“Chr”+数字相同约定的字符串的字段时,您可以将数字放入不同的字段中,将其保留为整数而不是字符串,然后按此排序。

于 2013-05-26T15:58:01.733 回答
1

请参考“ https://docs.mongodb.com/manual/reference/collat​​ion ”。

Mongo 为字母数字排序提供排序规则。

例子:-

db.names.find({}).sort({username:1}).collat​​ion({locale:'en_US', numericOrdering:true})

于 2018-12-08T08:31:49.857 回答
0

如果您在 mongodb 中使用聚合,也可以使用:-

db.names.aggregate([...query, {$sort:{username:1}]).collation({locale:'en_US', numericOrdering:true});

不要忘记在查询数组中添加键排序,否则您将无法获得排序顺序。

这个东西在文档中不可用。

于 2021-05-27T06:37:06.550 回答