2017-08-03 3 views
1

こんにちは私は春のデータを使用しています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がセキュアなネットワークであるデータをフェッチする必要があります。

質問タブに条件を適用する際に問題があります。

私のコード:

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の他のタイプをフィルタしなければならないので、それは、あなたの基準に基づいて、完全な文書をもたらすということです。

他の方法は集約ですが、アプリケーション層での処理が望ましいと思います。

関連する問題