是否有一种优雅的方法可以在Couchdb中按版本字段(存储为字符串)进行排序?
也就是说,如果我有像 major.minor.build.revision (5.5.1.14)这样的版本架构,我该如何发出密钥以确保以下语句按照特定顺序排列:
4.2.3.40
5.2.3.4
5.2.3.40
5.2.4.30
5.2.601.52
答案 0 :(得分:1)
我认为你在谈论map / reduce函数,假设有一个简单的解决方案:
只需通过.
拆分版本密钥,然后直接发出该数组。 CouchDB的view collation将按照您可能期望的方式对密钥进行排序。
function (doc) {
emit(doc.version.split('.'));
}
您甚至可以使用group_level
视图参数按每个层/级别聚合您的版本。首先,将以下内容添加为reduce函数:
_count
这是built-in reduce function,它将计算给定查询中的行数。
鉴于group_level
的以下值,您将看到以下结果。 (给出你的示例文档)
group=true
)