3

mongoTemplate または他のクラス/インターフェイスを使用して、コレクション内の 1 つまたは複数の列を検索できますか?

たとえば、コレクションから名前だけを取得したい場合: users(name, password, age, email) 、どうすればよいですか?

4

2 に答える 2

2

メソッドを使用して、クエリによって返されるフィールドを指定できますQuery.fields()

したがって、あなたの場合、ユーザー コレクションがクラスにマップされていると仮定するとUser、クエリは次のようになります。

Query query =new Query(whatever criteria you have);
query.fields().include("name");
List<User> list = template.find(query, User.class);

もう 1 つの方法は、MongoRepository を拡張し、Queryアノテーションでフィールドを指定することです。

public interface UserRepository extends MongoRepository<User, String> {

   @Query(fields="{ 'name' : 1}")
   List<User> findUserNames();

}

findUserNamesUsername フィールドと id フィールドのみが初期化されたインスタンスを返す必要があります。

編集

見た目では登録spring-data-mongoするコンバーターがないので、クエリに含まれるフィールド以外のすべてのフィールドをString取得するか、コンバーターを作成して登録する必要があります。Usernull

于 2012-10-18T10:12:27.580 に答える