2013-08-21 2 views
1

MongoDB에 다음 구조가 있습니다. 아래 표시된 체인 컬렉션의 중첩 된 구조가 있습니다. 필자는 아래에 나와있는 특정 날짜의 옵션 (예 : 2015-01-17)에 액세스하려고합니다.중첩 배열 구조 컬렉션에서 데이터에 액세스하는 방법

db.chains.find({ "symbol" : "UBSC" ,"option_exp.expiration_dt" : "2015-01-17"}).pretty() 

위의 쿼리는 해당 기호와 관련된 모든 데이터를 반환합니다.

{ 
     "_id" : ObjectId("52000a90d293b0e4134e8c35"), 
     "symbol" : "UBSC", 
     "option_exp" : [ 
       { 
         "expiration_dt" : "2015-01-17", 
          "options" : [ 
           { 
             "mult" : "10" 
           }, 
           { 
             "mult" : "10" 
           } 
         ] 
        }, 
         { 
         "expiration_dt" : "2014-01-18", 
         "options" : [ 
           { 

             "prem_mult" : "10" 
           }, 
           { 
             "prem_mult" : "10" 
           } 

      } 
         ] 
       } 
     ], 
} 

내가 사람이 특정 날짜의 데이터에 액세스하는 방법으로 저를 도와 주 시겠어요 자바

BasicDBObject query = new BasicDBObject(); 
query.append("symbol", "UBSC"); 
query.append("option_exp.expiration_dt", "2015-01-17"); 

을 통해 액세스를 시도하는 한 방법입니다.

답변

2

사용 $elemMatch 결과에 포함되어 option_exp 배열 필드의 내용 제한이 동일 expiration_dt과에 "UBSC"와 option_exp 배열 항목과 동일한 기호가 문서 '2015-01로 선택됩니다를

db.chains.find({symbol : "UBSC" ,"option_exp.expiration_dt" : "2015-01-17"}, 
       {option_exp: {$elemMatch: {expiration_dt: "2015-01-17"}}}) 

-17 ". 그런 다음 배열 내용을 만료일이 필요한 항목으로 option_exp으로 제한합니다 (그렇지 않으면 전체 문서 모두 option_exp 항목이 반환 됨).

+0

안녕하세요, 제가 언급 한이 옵션을 사용해 보았습니다.하지만 불행히도 아래 오류 오류가 발생했습니다. { "$ err": "지원되지 않는 프로젝션 옵션 : $ elemMatch", "code": 13097}, mongo1.6을 사용하고있었습니다. 버전 – Pawan

+0

나는 elemMatch가 버전 2.2 이후에 suppourt를 가지고 있다는 것을 알고있다. 그래서 이것을 달성하기위한 다른 대안이있다. – Pawan

+1

2.2 이전에는 일치하는 문서가 연결된 후에 코드에서이 작업을 수행해야했습니다. – Ross

관련 문제