好的,不确定mongodb是否可以这样做,但我需要的是将以下JSON插入我的货币数据库。
我们要更新的部分是交换历史,我们需要保留当天汇率的所有历史记录。第二天,例如。
例如
{"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 :(得分: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 );
访问所有历史信息:
$collection->find( array( 'from' => 'USD', 'to' => 'EUR' ) )
->sort( 'updated' => -1 )->skip( 1 );
答案 1 :(得分:-1)
这不适用于PHP,但它可能很有用。你必须从你的json字符串中创建一个BSON对象才能存储在数据库中。 Creating BSON from JSON 您也可以使用MongoDB PHP驱动程序教程和文档。他们可以在这里找到:MongoDB PHP Driver Tutorial