【问题标题】:Problem with implementing Sort in Spring Data (Mongodb)在 Spring Data (Mongodb) 中实现排序的问题
【发布时间】:2011-09-14 05:28:46
【问题描述】:

我需要使用spring data api做如下sql查询:

Select * from TagTest where tagName = "water temperature" Order by timestamp desc;

我想出了一个查询:

Query query = new Query(Criteria.where("tagName").is("water temperature"));

我将Sort定义为:

query.sort().on("timestamp", Order.DESCENDING);

和使用 mongoTemplate 做findOne() 一样:

mongoTemplate.findOne(Collection, query, MongoTag.class);

但我找不到一种方法来应用排序以检索 findOne 中的结果。 方法是否正确?如果我错了,请告诉我正确的方法。 谢谢。

【问题讨论】:

  • mongoTemplate.findOne(Collection, query, MongoTag.class); 在 for 循环中,您是将其添加到 ArrayList 还是 Array 中?如果没有,那么您将无法从 1 个返回值排序。

标签: mongodb spring-data


【解决方案1】:

首先,Mongo 不是 SQL 数据库,因此您永远不会在其上运行任何 SQL。我建议花一些时间在 Mongo 命令行上,以熟悉在 Mongo 中查询文档的工作方式——它在某些方面与 SQL 非常不同,在其他方面完全相同。我还会阅读 Mongo 文档,这非常好:http://www.mongodb.org/display/DOCS/Home

其次,查看您的目标“SQL”查询,您似乎想要所有的 TestTag,而不仅仅是一个。 findOne 就像它所说的那样 - 返回一条记录。您可能想改用find

一个好的开始可能是计算出您将在 mongo 命令行上运行的内容并从那里开始工作。

您不能使用findOne 并一起排序,但您应该可以使用findAll 并一起排序。如果你只想要一个结果,你可以在查询中添加一个限制:query.limit(1) 我相信。

【讨论】:

    【解决方案2】:

    为什么要运行 findOne 然后尝试对其进行排序?您在传统 SQL 中尝试过吗?它没有任何意义。否则,您将走在正确的道路上。尝试以下方法,它对我有用:

    public List<Person> listPersons() {
        Query query = new Query();
        query.limit(MAX_ROWS)
            .sort().on("dateCreated", Order.ASCENDING);
    
        return mongoTemplate.find(query, Person.class);
    }
    

    【讨论】:

      【解决方案3】:

      你可以这样使用它:

      public List<Person> listPersons() {
      Criteria criteria=Criteria.where("tagName").is("water temperature"));
      Query query = new Query();
      query.addcriteria(criteria);
      query.with(new Sort(Sort.Direction.ASC,"dateCreated")) ;   
      
      return mongoTemplate.find(query, Person.class);
      }
      

      我认为是对您问题的回答。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-01
        • 2013-06-06
        • 2015-05-31
        • 1970-01-01
        相关资源
        最近更新 更多