gpt4 book ai didi

Mongodb 按版本 x.y.z 排序

转载 作者:可可西里 更新时间:2023-11-01 09:52:28 27 4
gpt4 key购买 nike

我们的应用程序基于 MongoDB。我们将 IT Assets 的“名称”、“版本”和各种属性存储在 MongoDB 中。我们有一个新的搜索需求,我们需要根据关键字检索最新版本的 Assets 。这里的问题是我的版本号是格式xyz(即 major.minor.maintenance)

基本上,我应该首先按主要版本 (desc)、次要版本 (desc) 和维护版本 (desc) 对结果集进行排序。例如对于下面给出的版本号:1.0.101.1.011.0.02.0.1排序后的版本应该是:1.0.101.2.102.0.111.0.0我有可能在 Mongo 层本身对其进行正确排序吗?不幸的是,版本号仅存储为单个字符串值,而不是 x.y.z 格式的结构化对象。

提前致谢!泽巴

最佳答案

您需要存储该字段的第二个表示,mongo 无法对语义版本进行排序。我选择将每个组件填充到 4 个字符。

var document = {
version: "1.2.3",
padded_version: "0001.0002.0003",
}

然后你可以根据字典字符串索引进行排序。

db.ensureIndex({ padded_version: -1 }) 

您还可以对每个组件进行位移:

var document = {
version: "1.2.3",
integer_version: 1 << 16 + 2 << 8 + 3,
}

它限制你只能使用 256 个新版本,但是有潜在的溢出问题等。我会坚持使用零填充字符串版本。

关于Mongodb 按版本 x.y.z 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19838710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com