Spring数据查询

时间:2015-09-24 16:23:24

标签: spring mongodb spring-data

我有一个名为存档的Mongo DB - Spring数据文档,其属性为 iucId storageDateTime 。现在,我将使用特定的iucId查询最新存储的存档。我不知道如何询问最新的 storageDateTime

询问iucId很简单:

List<Archive> findArchiveByIucId(final String iucId);

但是最新 storageDateTime 的记录是我的问题。

有人可以帮我解决这个问题吗? 非常感谢你的帮助!!

@Document(collection = "Archive")
public class Archive {

    @Id
    private String id;
    private String iucId
    private DateTime storageDateTime;

2 个答案:

答案 0 :(得分:0)

您可以使用

Optional<Archive> findFirstByIucIdOrderByStorageDateTimeDesc(final String iucId);

了解更多here

答案 1 :(得分:0)

以下mongodb查询将返回最新存储的存档,其中包含特定的iucId:

//The '-1' = sort descending (newest to oldest)
db.archive.find({iucId: "zzz"}).sort({storageDateTime: -1}).limit(1);

在Spring数据中,使用:

import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

    //...
    Query query = new Query();
    query.addCriteria(Criteria.where("iucId").is("zzz"));
    query.limit(1);
    query.with(new Sort(Sort.Direction.DESC, "storageDateTime"));

    mongoOperation.find(query, Domain.class);