0

このドキュメントがあるとしましょう:

Array
(
    [created_at] => 1373767280
    [email] => admin@mysite.com
    [emailQueries] => Array
        (
            [21] => 1
        )
    [last_visit] => 1375033640
)

emailQueriesフィールドを更新するには、次のようにします。

$updateEmailQueries['emailQueries']['22'] = 1;
$collection->update( array('email' => $user['email']), array( '$set' => $updateEmailQueries ) );

更新しますが、常に配列内の既存の項目を置き換えます (つまり、[21] => 1 は [22] => 1 になります)。私の目標は、配列に値を追加し、たとえば次のようにすることです。

    [emailQueries] => Array
        (
            [21] => 1
            [22] => 1

        )

秒を追加しようとしました'$set'が、うまくいかないようです。

アップデート:

私は試した:

$updateEmailQueries['emailQueries']['21'] = 1;
$collection->update( array('email' => $user['email']), 
                     array( '$push' => $updateEmailQueries ) );

そして、私は得る

Fatal error: Uncaught exception 'MongoCursorException' with message 'localhost:27017: Cannot apply $push/$pushAll modifier to non-array';

4

1 に答える 1

1

$pushオペレーターを探しています。

$arrayValueToAdd = array ( '22' => 1 );
$collection->update(   array('email' => $user['email']), 
                       array( '$push' => 
                           array( 'emailQueries' => $arrayValueToAdd ) 
                       )
                    );
于 2013-07-28T17:59:38.157 に答える