假设我在 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/