2016-05-06 4 views
2

現在、Spring Data Mongoを使用しているプロジェクトに取り組んでいます。 私のリポジトリは、MongoRepositoryを拡張する単なるインタフェースです。私は私のコレクションのフィールドのいずれかのすべての異なる値を取得するためにカスタムクエリメソッドを追加したいと思います。SpringデータMongo - クエリメソッドとDistinctフィールド

私はこのような何か試してみました:それは私のリストを作成することはできませんので、春は私にエラーを与えて、そのコードで

@RepositoryRestResource(path = "devices", collectionResourceRel = "deviceInfos") 
public interface DeviceInfoRepository extends MongoRepository<DeviceInfo, String> { 

    @RestResource(path = "distinctUnitIds") 
    List<String> findDistinctUnitIdBy(); 

} 

を。だから私はこれを試してみました:

@RepositoryRestResource(path = "devices", collectionResourceRel = "deviceInfos") 
public interface DeviceInfoRepository extends MongoRepository<DeviceInfo, String> { 

    @RestResource(path = "distinctUnitIds") 
    List<DeviceInfo> findDistinctUnitIdBy(); 

} 

コードは動作しますが、個別のは完全に無視されるように思われます。

queryメソッドで個別に関するドキュメントは

は、私が何か間違ったことをしました...本当に明確ではないでしょうか? Spring Dataを使用してフィールドの別個の値を得るにはどうすればよい解決策ですか?

ありがとうございます!

答えて

4

春のデータを使用する必要がありますMongoTemplate - MongoRepositoryのインターフェイスは、基本的な機能とクエリの内容を詳細に制御するために作られており、MongoTemplateを使用するのが最適です。ここで

は、1つのコレクションから個別の値を取得する方法の例である:あなたの答えのためのmongodb mongoTemplate get distinct field with some criteria

+1

ありがとう:ここ

Criteria criteria = new Criteria(); criteria.where("dataset").is("d1"); Query query = new Query(); query.addCriteria(criteria); List list = mongoTemplate.getCollection("collectionName") .distinct("source",query.getQueryObject()); 

は、詳細情報へのリンクです。私はそのようなことを期待していた。リファレンスガイドに記載されているfindDistinctByの機能は何ですか? –

+0

mongoリポジトリでdistinctキーワードがサポートされていない場合は、サポートされているキーワードを確認してください。http://docs.spring.io/spring-data/data-document/docs/current/reference/html/#mongodb.repositories.queries – Sigrist

関連する問題