更新に使える方法は、二通りあります。変更による更新と、置換による更新です。
変更による更新は $ 演算子を含み、ドキュメント内のフィールドを変更します。
カウンタを増加させたり配列に新しい要素を追加したり、フィールドの型を変更したりといった更新がこれにあたります。
<?php
/** このようなドキュメントを前提としています
* {"username" : "...", "password" : "...", "email" : "..."}
*/
$coll->update(array("username" => "joe"), array('$set' => array("twitter" => "@joe4153")));
/** この結果、ドキュメントは次のようになります
* {"username" : "joe", "password" : "...", "email" : "...", "twitter" : "@joe4153"}
*/
?>
置換による更新は、マッチしたドキュメント全体を新しいドキュメントで置き換えます。
$ 演算子を使った更新よりも非効率的ですが、複雑な操作や
$ 演算子で表現できないような更新などでは非常に便利です。
<?php
/** このようなドキュメントを前提としています
* {"username" : "...", "password" : "...", "email" : "..."}
*/
$coll->update(array("username" => "joe"), array("userId" => 12345, "info" => array(
"name" => "joe", "twitter" => "@joe4153", "email" => "..."), "likes" => array()));
/** この結果、ドキュメントは次のようになります
* {
* "userId" : 12345,
* "info" : {
* "name" : "joe",
* "twitter" : "@joe4153",
* "email" : "..."
* },
* "likes" : []
* }
*/
?>