1

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。アプローチは正しいですか?私が間違っている場合に備えて、正しいアプローチを教えてください。ありがとう。

4

3 に答える 3

2

まず、Mongo は SQL データベースではないため、SQL を実行することはありません。Mongo でドキュメントのクエリを実行する方法に慣れるために、Mongo のコマンド ラインに時間を費やすことをお勧めします。SQL とはいくつかの点で大きく異なりますが、他の点ではまったく同じです。Mongo のドキュメントも読んでみたいと思います。これは非常に優れています: http://www.mongodb.org/display/DOCS/Home

次に、目的の「SQL」クエリを見ると、1 つだけでなく、すべての TestTags が必要なようです。findOneそれが言うことだけを行います - 単一のレコードを返します。findおそらく代わりに使用したいでしょう。

開始するのに適した場所は、mongo コマンド ラインで何を実行するかを考え出し、そこから作業することです。

一緒に使用して並べ替えることはできませんがfindOne、一緒に使用して並べ替えることができるはずですfindAll。また、結果が 1 つだけ必要な場合は、クエリに制限を追加できますquery.limit(1)

于 2011-09-15T05:49:18.253 に答える
0

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);
}
于 2013-03-20T22:37:31.947 に答える
0

次のように使用できます。

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);
}

あなたの質問への回答だと思います。

于 2014-08-25T13:43:03.180 に答える