2017-11-22 10 views
0

を使用して一致する場合、私は文書を持ってMongoClientが、私は、キーを「Amount_Required」しているすべての結果を戻すために、クエリを作成しようとしています...彼らは、Java

doc = 
    { 
     "Loan_Num"  : "Loan002", 
     "Info" : "Loan for processing details." 
     "Loan_Items" : [ 
          { 
           "Invoice_Num" : "32134324", 
           "Quantity" : 1, 
           "Amount_Required" : "£4" 
          }, 

          { 
           "Book_Barcode" : "22222", 
           "Quantity" : 1, 
           "Amount_Required" : "£2" 
           "Amount_Payed" : true 
          } 
         ] 
    }; 

をアレイ内の個々の項目をバック持参"Amount_Payed"キーは持っていません。

だから私はこの結果を期待する以上の文書から...

{ 
     "Loan_Num"  : "Loan002", 
     "Info" : "Loan for processing details." 
     "Loan_Items" : [ 
          { 
           "Invoice_Num" : "32134324", 
           "Quantity" : 1, 
           "Amount_Required" : "£4" 
          } 
         ] 
    }; 

は、これは私のJavaコードである...という

BasicDBObject searchQuery = new BasicDBObject(); 
    searchQuery.append("Loan_Num", "Loan002"); 
    searchQuery.append("Loan_Items.Fine_Amount", new BasicDBObject("$exists", true)); 
    searchQuery.append("Loan_Items.Fine_Payed", new BasicDBObject("$exists", false)); 

問題は、それが以来、何も返さないで"Amount_Played"は配列の2番目の要素に存在します。どのように私はこの結果を達成することができますか? - あなたは$elemMatchを使用して試みることができる多くのおかげ

答えて

0

あなたのクエリは、このようなものになります。

db.collection.find({"Loan_Items" : {$elemMatch : { "Amount_Required" : { $exists : true}, "Amount_Payed" : { $exists : false}}}}) 

は、この情報がお役に立てば幸い!