2017-02-11 63 views
0

我將通過搜索字符串和兩個參數(項目和租戶)在我的mongoDB數據庫中搜索workingBook文檔。 有沒有可能做到這一點? 這是我目前春數據查詢,但它不工作:春季數據 - 按搜索字符串和兩個參數搜索文檔

@Query("{$text : { $search : ?0 } }") 
List<WorkingBook> findWorkingBookByProjectAndTenantAndSearchString(final Project project, final Tenant tenant, 
     final String searchString); 

那是一個樣本文檔:

db.WorkingBook.find().pretty() 
{ 
"_id" : ObjectId("589f2af42f7a97b95842afc6"), 
"_class" : "my.domain.dao.domain.WorkingBook", 
"dateTimeFrom" : ISODate("2017-02-11T15:16:33Z"), 
"dateTimeUntil" : ISODate("2017-02-11T16:17:33Z"), 
"categoryType" : "SERVICE", 
"workingText" : "That's a working book text ", 
"creationDateTime" : ISODate("2017-02-11T15:17:08.550Z"), 
"user" : DBRef("User", ObjectId("5589929b887dc1fdb501cdba")), 
"project" : DBRef("Project", ObjectId("5899eb0dbfb41f1382eac15a")), 
"tenant" : DBRef("Tenant", ObjectId("58500aed747a6cddb55ba094")) 
} 

回答

0

假設您在ProjectTenant類別中都有id字段,如下所示。

@Id 
private String id; 

DBRef象下面這樣WorkingBook

@DBRef 
private Project project; 

@DBRef 
private Tenant tenant; 

隨着@Query註釋

傳遞項目和租戶ID與搜索字符串一起。

@Query("{$text : { $search : ?0 }, 'project' : ?1, 'tenant' : ?2 }") 
List<WorkingBook> findWorkingBookByProjectAndTenantAndSearchString(final String searchString, final String projectId, final String tenantId); 

沒有@Query註釋

您可以定義庫中的下面的方法。

List<WorkingBook> findByProjectAndTenant(final TextCriteria searchString, final String projectId, final String tenantId); 

長途區號

TextCriteria textCriteria = new TextCriteria().matching(searchString); 
List<WorkingBook> workingBookList = workingBookRepository.findByProjectAndTenant(textCriteria, projectId, tenantId); 
0

春天的數據不會將查詢從一個註釋與來自法生成的查詢合併名稱。因此,如果您想將搜索查詢與名稱生成的內容組合在一起,您必須自己完成,並將其放入註釋中。

+0

而如何做到這一點在我的情況,我不清楚如何實現,用@Query註釋還是...?非常感謝! – quma