mongodb - 根据发布版本排序,即;美国广播公司
问题描述
我有一个version
随机顺序的字段集合
[
{
"_id" : ObjectId("5ea7dfcf33b735ec0ae69019"),
"version" : "1.2.1"
},
{
"_id" : ObjectId("5ea7dfcf33b735ec0ae6901a"),
"version" : "1.2.2"
},
{
"_id" : ObjectId("5ea7dfcf33b735ec0ae6901b"),
"version" : "1.2.3"
},
{
"_id" : ObjectId("5ea7dfcf33b735ec0ae6901c"),
"version" : "1.1.0"
},
{
"_id" : ObjectId("5ea7dfcf33b735ec0ae6901d"),
"version" : "1.1.1"
},
{
"_id" : ObjectId("5ea7dfcf33b735ec0ae6901e"),
"version" : "1.3.1"
},
{
"_id" : ObjectId("5ea7dfcf33b735ec0ae6901f"),
"version" : "1.1.2"
},
.
.
.
{
"_id" : ObjectId("5ea7dfcf33b735ec0ae6901f"),
"version" : "1.9.1"
},
{
"_id" : ObjectId("5ea7dfcf33b735ec0ae6901f"),
"version" : "1.10.1"
}
]
等等
我想根据版本按排序顺序获得输出。
我可以在拆分版本后对其进行排序,但我不想采用这种方法。
任何帮助将非常感激。
提前致谢 :)
解决方案
您可以通过排序规则获得此行为
首先创建一个索引:
.createIndex({version:1},{collation:{locale:"en",numericOrdering:true}})
并在需要排序时指定排序规则:
.find().sort({version:1}).collation({locale:"en",numericOrdering:true})
您可以在没有索引的情况下获得类似的行为,但对于非平凡的数据集,它确实使它表现更好。
推荐阅读
- python - 如何修复 TF-Agents 中 policy_state 和 policy_state_spec 之间的 TypeError?
- bash - 在发送 10 个时间戳之后,我将如何编写一个发送 10 个 ICMP 回显请求的脚本
- asp.net - 革命滑块背景视频未在 Safari 浏览器中播放
- react-native - 如何在不同的端口上运行 Expo Client?
- typescript - Firebase 功能在本地运行,但部署失败
- continuous-integration - 特拉维斯引起:java.net.UnknownHostException:配置
- javascript - 问题获取 ID(Angular Material - Firestore)
- php - 我正在为多个用户和每个用户的特定数据库制作一个项目。每当用户访问 url 时,特定的数据库就会连接(laravel)
- python - 使用 grid() 编译时出现在不同行上的标签和输入字段
- javascript - 在 react 或 vanilla js 中链接时如何从 URL 中删除 #