<slide>
<title>MongoDB: Update Operators</title>

<div effect="fade-out">
<blurb>Don't do this:</blurb>
<example inline="1"><![CDATA[&lt;?php
$m = new MongoClient;
$c = $m->demo->steps;
$r = $c->findOne( [ 'person' => 'derickr' ] );
*$r['steps_made']["20170202"] = $r['steps_made']["20170202"] + 7124;*
*$c->update( [ 'person' => 'derickr' ], $r );*
]]></example>
</div>

<div effect="fade-in">
<blurb>Do this instead:</blurb>
<example inline="1"><![CDATA[&lt;?php
$m = new MongoClient;
$c = $m->demo->steps;
$c->update(
    [ 'person' => 'derickr' ], 
    [ *'$inc'* => [ "steps_made.20170202" => 7124 ] ] 
);]]>
</example>

<blurb>Other operators:</blurb>
<example inline="1">$c->update( 
    [ 'person' => 'derickr' ], 
    [ *'$addToSet'* => [ 'tags' => 'openstreetmap '] ] 
);</example>
<example inline="1">$c->update( 
    [ 'person' => 'derickr' ], 
    [ *'$push'* => [ 'tags' => [ 
        '$each' => [ 'mongodb', 'xdebug' ], 
        '$slice' => -2 
    ] ] ] 
);</example>
</div>
</slide>
