MongoDB可以进行字母数字排序吗?

时间:2013-05-26 15:20:09

标签: mongodb

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

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

不是按此顺序获取值,而是在

中获取它们
Chr1, 
Chr11

这是一个常见的问题,并且想知道MongoDB是否有这种内置解决方案,或者我们应该像通常在Oracle中那样破解它。 如果没有内置解决方案,那么最好的方法是什么?自然排序是一种可接受的解决方案,但我已将其应用于其他领域。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

请参阅“ https://docs.mongodb.com/manual/reference/collation”。

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

示例:-

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

答案 2 :(得分:0)

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

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

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

文档中没有这个东西。