0

こんにちは、mongodb は初めてで、ここで PHP を使用しています。以下のような配列を持つサブドキュメントを既存のドキュメントに更新したい。

[weeksAtOne] => Array
    (
        [156] => 1586
    )

以下の関数を呼び出そうとすると

$query = array('decade' => array('$in' => array(1980,1990)));   
$songs->update($query, 
        array('$push'=>array('weeksAtOne'=>array(156 => 500))),
        array('safe'=>true,'timeout'=>5000,'multiple'=>true))

期待通りにはいかず、違う形でやってくるでしょう。これを更新する正しい方法を教えてください。

元の配列:

Array
(
[_id] => MongoId Object
    (
        [$id] => 55004cbd30d6d48819000004
    )

[decade] => 1980
[artist] => Olivia Newton-John
[song] => Physical
[weeksAtOne] => Array
    (
        [10] => 10
        [11] => 100
        [22] => 500
    )

 )
Array
(
[_id] => MongoId Object
    (
        [$id] => 55004cbd30d6d48819000005
    )

[decade] => 1990
[artist] => Mariah Carey
[song] => One Sweet Day
[weeksAtOne] => Array
    (
        [10] => 16
        [21] => 100
        [23] => 500
    )

)

期待される出力:

Array
(
[_id] => MongoId Object
    (
        [$id] => 55004cbd30d6d48819000004
    )

[decade] => 1980
[artist] => Olivia Newton-John
[song] => Physical
[weeksAtOne] => Array
    (
        [10] => 10
        [11] => 100
        [22] => 500
        [156] => 1586
    )

 )
Array
(
[_id] => MongoId Object
    (
        [$id] => 55004cbd30d6d48819000005
    )

[decade] => 1990
[artist] => Mariah Carey
[song] => One Sweet Day
[weeksAtOne] => Array
    (
        [10] => 16
        [21] => 100
        [23] => 500
        [156] => 1586
    )

)
4

1 に答える 1