1
彈簧數據提供各種存儲庫,用於MongoDB的CRUD,分頁和排序。 當我們需要使用各種屬性的mongodb文檔時,我們傾向於編寫findBy
方法或編寫一個明確的查詢方法,其註釋的註釋編號爲@Query
。 但是,如果我的文檔有很多屬性,並且我需要各種方法來獲取文檔,那麼spring是否提供了一個「存儲庫方法」,它接受了屬性和值的映射? 書寫各種findBy
可能會很麻煩。使用QueryDSL似乎是一種選擇,但需要代碼生成和build.gradle更改。如果基於地圖的解決方案不可用,我可以使用QueryDSL。彈簧數據爲mongodb與基於地圖的查找
對於前:
class FooDocument {
String id ;//mongodb ObjectId
String name
String version
boolean deleteIndicator
... any more attributes
}
需要在倉庫裏的方法一樣
List<FooDocument> findByMap (Map attrValMap);
調用方法(常規)
repository.findByMap ([ "name" : "fooname", "version" : "1.0" ])
repository.findByMap ([ "name" : "fooname"])
repository.findByMap ([ "version" : "1.0", "deleteIndicator" : false])
很願意編寫使用Criteria/Query
組合這種方法或者基於BasicDBObject
的基於MongoOperations接口的spetch訪存ng數據不提供這種開箱即用的功能。
查詢選項似乎更容易。我可以在存儲庫上聲明findByQuery(Query query)方法,並提供此方法的自定義實現,該方法將調用委託給接受Query實例的MongoOperations#方法。我不需要重複迭代和獲取。但希望spring repository能夠爲mongodb提供這種功能。 –