2012-05-02 79 views
1

在MongoDB中的PHP我使用下面的示例代碼推新的項目到一個集合裏的數組結束...MongoDB + PHP:如何使用特定鍵將項目推送到數組?

$data = array(
     "domain"=>"superduperyoyo.com", 
     "number"=>123, 
     "week"=>5, 
     "year"=>2012 
); 
$db->domains->save(
     array('someid' => $someid), 
     array('$push' => array('data' => $data)) 
); 

這將返回象0,1,2,3鍵.. .. ie。

[someid] => somesupercoolid123 
[data] => Array 
    (
     [0] => Array 
      (
       [domain] => superduperyoyo.com 
       [number] => 123 
       [week] => 5 
       [year] => 2012 
      ) 
     [1] => Array(...) 
     [2] => Array(...) 
    ) 

我想要做的是存儲YearWeekNumber因爲像這樣的關鍵...

[someid] => somesupercoolid123 
    [data] => Array 
     (
      [201205123] => Array 
       (
        [domain] => superduperyoyo.com 
        [number] => 123 
        [week] => 5 
        [year] => 2012 
       ) 
      [201206123] => Array(...) 
      [201207123] => Array(...) 
     ) 

你如何保存/更新與新條目沿着鑰匙?我假設你不能使用$ push。你只是使用.save或.update,但你如何通過密鑰?

回答

2

你會使用$set做到這一點:

$data = array(
     "domain"=>"superduperyoyo.com", 
     "number"=>123, 
     "week"=>5, 
     "year"=>2012 
); 
$db->domains->update(
     array('someid' => $someid), 
     array('$set' => array('data' => array(201205123 => $data))) 
); 

我然而,並非建議這樣做。最好使用此「201205123」值設置另一個鍵,否則您無法對此值執行範圍查詢或設置索引。

+0

我剛開始dabling與蒙戈和我嘗試不同的模式。我會索引「數字」,「星期」,「年份」...關鍵是隻需要明確提出一個單獨的記錄,並且也沒有重複。設置/保存將更新,而不是再次插入。 –

1
$data = array(
     "domain"=>"superduperyoyo.com", 
     "number"=>123, 
     "week"=>5, 
     "year"=>2012 
); 
$update = array(
     '$push' => array('data.201205123' => $data) 
); 
相關問題