2012-06-05 2 views
1

mongodb이이 작업을 수행 할 수 있는지 확실하지 않지만 다음 JSON을 내 통화 DB에 삽입해야합니다.MongoDB PHP를 서브 배열에 삽입

업데이트 할 부분은 exchangehistory입니다. 우리는 그 날의 모든 환율 기록을 유지해야합니다. 다음날 (예 : 예컨대위한

{"from":"USD","currentexchange":[{"to":"NZD","rate":"1.3194","updated":"6\/5\/20121:38am"},{"to":"KWD","rate":"0.2807","updated":"6\/5\/20121:38am"},{"to":"GBP","rate":"0.6495","updated":"6\/5\/20121:38am"},{"to":"AUD","rate":"1.0228","updated":"6\/5\/20121:38am"}],"exchangehistory":{"6\/5\/2012":[{"1:38am":[{"to":"NZD","rate":"1.3194","updated":"1:38am"}]},{"1:38am":[{"to":"KWD","rate":"0.2807","updated":"1:38am"}]},{"1:38am":[{"to":"GBP","rate":"0.6495","updated":"1:38am"}]},{"1:38am":[{"to":"AUD","rate":"1.0228","updated":"1:38am"}]}]}} 
+0

봐. 가능한 복제 : http://stackoverflow.com/questions/7026483/insert-data-into-inner-array-in-mongodb –

답변

0

나는 이것을 이와 같은 배열에 저장하지 않을 것입니다.

{ 
    from: "USD", 
    to: "EUR", 
    updated: new DateTime("2012-05-04 13:43"), 
    rate: 1.235, 
}, 
{ 
    from: "USD", 
    to: "EUR", 
    updated: new DateTime("2012-05-06 13:43"), 
    rate: 1.24, 
}, 
{ 
    from: "USD", 
    to: "AUD", 
    updated: new DateTime("2012-05-06 13:43"), 
    rate: 1.43, 
} 

문서가 커지지 않으므로 데이터베이스에서 훨씬 가볍습니다. 그리고 문서가 커지면 이동해야합니다. 또한 아주 쉽게 현재의 속도로 조회 할 수 있습니다

$collection->find(array('from' => 'USD', 'to' => 'EUR')) 
      ->sort('updated' => -1)->limit(1); 

을 그리고 모든 기록 정보에 접근 : $ addToSet에 대한

$collection->find(array('from' => 'USD', 'to' => 'EUR')) 
      ->sort('updated' => -1)->skip(1); 
+0

위대한 작품이지만, 우리는 또한 환율의 역사를 저장할 필요가 – RussellHarrower

+0

맞아, d에는 각 변환에 대한 이전 문서가 있습니다. 다른 '업데이트 된'필드가있는 USD-> EUR 문서 두 개를 가지고 있지 않습니다. 나는 분명히하기 위해 위의 다른 문서를 추가했습니다. – Derick

-1

이 PHP를위한 아니지만 유용 할 수 있습니다. 데이터베이스에 저장하려면 json 문자열에서 BSON 객체를 만들어야합니다. Creating BSON from JSON MongoDB PHP Driver 튜토리얼 및 문서도 사용할 수 있습니다. 그들은 여기에서 찾을 수 있습니다 : MongoDB PHP Driver Tutorial

관련 문제