2017-08-03 50 views
1

嗨,我正在使用spring數據mongo,我需要基於多個條件獲取數據。我想要在列表中應用where子句時出現問題。列表上的Spring Mongo條件列表

例如

{ 
    "_id" : ObjectId("5982bf9339f3c92b84be4737"), 
    "_class" : "com.paladion.payment.model.GroupQuestionMapping", 
    "saqID" : "SAQ A", 
    "saqVersion" : "3", 
    "questionTab" : { 
     "Secure Network" : [ 
      { 
       "number" : "2.1 (a)", 
       "question" : "Are vendor-supplied" 
     "description" : "<ul><li>Review" 
     }, 
      { 
       "number" : "2.1 (b)", 
       "question" : "Are unnecessary" 
     "description" : "<ul><li>Review policies 
     } 
     ], 
     "Access Control" : [ 
      { 
       "number" : "2.1 (a)", 
       "question" : "Are vendor-supplied" 
     "description" : "<ul><li>Review" 
     }, 
      { 
       "number" : "2.1 (b)", 
       "question" : "Are unnecessary" 
     "description" : "<ul><li>Review policies 
     } 
     ] 
    } 
} 

在這裏我需要在那裏saqId是SAQ A和SAQ版本是3和questionTab是安全的網絡來獲取數據。

我在使用questionTab標準時遇到問題。

我的代碼:

Query query = new Query(); 
query.addCriteria(Criteria.where("saqtype").is(saqType)); 
query.addCriteria(Criteria.where("saqversion").is(saqVersion)); 
query.addCriteria(/* criteria on questionTab */); 

回答

0
query.addCriteria(Criteria.where("questionTab.Secure Network").exists(true)); 

一點要注意的是,它會爲你帶來基於標準的完整的文檔,所以你將不得不過濾掉來自其他文件類型questionTab的。

其他方式是聚合,但我認爲應用層上的處理可能是更好的。