gpt4 book ai didi

spring - 查找具有最大 semver 版本的对象

转载 作者:行者123 更新时间:2023-12-04 09:08:00 27 4
gpt4 key购买 nike

假设我在 MongoDB 中有一些文档,带有 version属性(semver 版本),例如类似 { ..., version: { major: 1, minor: 2, patch: 13 } } , 或 { ..., version: "1.2.13" } ,我还没有决定我将使用哪种格式。
我需要找到最高version的文档.
例如,如果集合有两个文档 {..., version: "0.10.0"}{..., version: "1.0.0"}然后我想用 version = "1.0.0" 获取文档
我正在使用 Spring Data MongoDB,所以理想情况下我想通过使用 Criteria API 找到一些解决方案

最佳答案

当我使用 version 的第一种格式时,结果很简单:{ ..., version: { major: 1, minor: 2, patch: 13 } }然后我可以按所有这三个字段排序并获取一个顶级文档:

db.metadata.find({})
.projection({})
.sort({ "version.major": -1, "version.minor": -1, "version.patch": -1 })
.limit(1)
此查询使用 Criteria API 编写:
public Metadata getLatestMetadata() {
Criteria criteria = Criteria
.where("type").is(TEST_TYPE);

Query query = Query.query(criteria).with(getVersionSort()).limit(1);
return mongoOperations.findOne(query, Metadata.class);
}

private Sort getVersionSort() {
return Sort.by(new Sort.Order(Sort.Direction.DESC, "version.major"),
new Sort.Order(Sort.Direction.DESC, "version.minor"),
new Sort.Order(Sort.Direction.DESC, "version.patch"));
}

关于spring - 查找具有最大 semver 版本的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63410228/

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