[英]Creating a complex query using QueryDSL and MongoDB in Java
我按照本教程設置了MongoDB
http://www.littlelostmanuals.com/2011/09/spring-mongodb-type-safe-queries.html
一切都按預期工作,但現在我陷入了一個我希望能夠在多個字段上查詢的地方。
目前,我正在保存每種類型的存儲庫接口,並且可以在單個字段上搜索。
public interface StartedEventRepository extends
MongoRepository<DatablockStartedEvent, String>,
QueryDslPredicateExecutor<DatablockStartedEvent> {
}
以下是單個參數的查詢。
return startedEventRepo
.findOne(QDatablockStartedEvent.datablockStartedEvent.searchId
.eq(searchId));
是否可以創建一個Query對象,我可以在其中說出類似於以下內容的內容。
if(someName != null){
query.where(QMyClass.name.eq(someName));
}
if(someTime != null){
query.where(QMyClass.time.eq(someTime));
}
List result = query.list();
我試過看MongodbQuery但我無法讓它工作。 有任何想法嗎?
我看到了一個例子http://www.mkyong.com/mongodb/spring-data-mongodb-update-document/但這使用了mongoTemplate。 有沒有辦法通過存儲庫實現這一點,如果沒有,它們是無用的嗎?
它應該是可能的。 也許這樣的事情
BooleanBuilder builder = new BooleanBuilder();
if(someName != null){
builder.and(QMyClass.name.eq(someName));
}
if(someTime != null){
builder.and(QMyClass.time.eq(someTime));
}
repository.findAll(builder.getValue())
如果沒有使用Spring Data,我會從閱讀這個http://static.springsource.org/spring-data/data-document/docs/1.0.0.M2/reference/html/#mongodb.repositories.queries中猜到您只需在存儲庫中聲明方法名稱告訴您的查詢結構的方法(在同一站點上通過示例4.3支持此猜測)。 不確定如果您可以生成動態查詢,這是唯一一個快速搜索顯示的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.