2012-10-18 31 views
3

我可以使用mongoTemplate或其他類/接口在集合中查找一個/多個列嗎?Spring mongoTemplate查找特殊列

例如,如果我只想從集合中獲得名稱:用戶(姓名,密碼,年齡,電子郵件) ,我該怎麼辦?

回答

2

您可以用Query.fields()方法指定查詢返回的字段。

你的情況

因此,假設用戶集合映射到User類查詢看起來是這樣的:

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

另一種方式爲O延伸的MongoRepository並指定領域qith Query註釋:

public interface UserRepository extends MongoRepository<User, String> { 

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

} 

findUserNames應該返回User只有name和id字段已初始化的實例。

編輯

通過看起來它spring-data-mongo沒有一個轉換器String註冊的,所以你必須要麼檢索User與除包括在查詢中的那些所有字段設置爲null或創建和註冊一個轉換器。

+0

使用模板的鏈接可以得到名稱列表? – user1755541

+0

@ user1755541不確定mongo是否已將轉換器註冊爲DBObject爲String,但您可以輕鬆嘗試(只需將User更改爲String)。你當然可以得到一個只有'name'元素集的Map。 – soulcheck

+0

@ user1755541看起來你不能默認。 – soulcheck