1

在 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.... 之类的键,即。

[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 但如何传递密钥?

4

2 回答 2

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”值设置另一个键,否则您将无法对此值进行范围查询或设置索引。

于 2012-05-02T21:21:53.383 回答
1
$data = array(
        "domain"=>"superduperyoyo.com",
        "number"=>123,
        "week"=>5,
        "year"=>2012
);
 $update = array(
        '$push' => array('data.201205123'  =>  $data )
);
于 2012-07-11T23:33:49.563 回答