我可以使用mongoTemplate或其他類/接口在集合中查找一個/多個列嗎?Spring mongoTemplate查找特殊列
例如,如果我只想從集合中獲得名稱:用戶(姓名,密碼,年齡,電子郵件) ,我該怎麼辦?
我可以使用mongoTemplate或其他類/接口在集合中查找一個/多個列嗎?Spring mongoTemplate查找特殊列
例如,如果我只想從集合中獲得名稱:用戶(姓名,密碼,年齡,電子郵件) ,我該怎麼辦?
您可以用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
或創建和註冊一個轉換器。
使用Google Guava解決您的問題。 當然,您可以使用標準的foreach構建, ,但在我看來,番石榴更快實施和測試。
這裏是一個很好的例子 http://www.leveluplunch.com/java/tutorials/002-transform-objects-with-guava/
使用模板的鏈接可以得到名稱列表? –
user1755541
@ user1755541不確定mongo是否已將轉換器註冊爲DBObject爲String,但您可以輕鬆嘗試(只需將User更改爲String)。你當然可以得到一個只有'name'元素集的Map。 – soulcheck
@ user1755541看起來你不能默認。 – soulcheck