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 に答える