【问题标题】:Getting the latest record from the collection of documents in MonogDB using MongoTemplate使用 MongoTemplate 从 MongoDB 中的文档集合中获取最新记录
【发布时间】:2019-11-21 17:44:35
【问题描述】:

我是 MongoDB 的新手,在 Spring MVC 中使用 MongoTemplate 从文档集合中获取最新记录时遇到一些问题。 在 mongo shell 中,我可以通过执行以下查询来获得结果。

db.patients.find().sort({dateOfBirth: -1}).limit().pretty()

但我不知道如何在我的 java 类中使用 MongoTemplate 实现相同的功能。任何帮助将不胜感激。

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    你可以使用以下

    Query query = new Query();
        query.limit(1);
        query.with(new Sort(Sort.Direction.DESC, "dateOfBirth"));
    
        mongoOperation.find(query, Patients.class);
    

    请注意,我在限制中设置了 1。所以它只会返回 1 条记录。

    【讨论】:

    • 我认为您可以使用 findOne 而不是将限制设置为 1。
    • 是的,这也是一个不错的选择。我唯一尝试的是对他的 mongodb 原始查询的样子进行真实的翻译。但是如果我们只针对 1 条记录, findOne 会很好。
    • 感谢您的回答@Satish:-)
    【解决方案2】:

    现在将 Sort 构造函数设为私有。你不能再这样做了 你仍然可以像下面这样使用

        Query query = new Query();
        query.limit(1);
        query.with(Sort.by(Sort.Direction.DESC,"_id"));
        return Optional.of(mongoTemplate.findOne(query, RootPath.class));
    

    【讨论】:

      【解决方案3】:
      db.patients.aggregate([
      {$sort:{dateOfBirth: -1}},
      {$limit:3}
      ])
      

      这将按降序给出 dateofbirth 的排序输出,它将只显示所有记录中的三个。我希望这会有所帮助

      【讨论】:

        猜你喜欢
        • 2012-06-10
        • 2016-03-26
        • 2018-11-23
        • 1970-01-01
        • 2020-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-25
        相关资源
        最近更新 更多