(PECL mongo >=0.9.0)
MongoCollection::save — オブジェクトをコレクションに保存する
データベースから取得したオブジェクトの場合はデータベース上の既存のオブジェクトを更新し、 それ以外の場合はオブジェクトを追加します。
保存したい配列。
保存時のオプション。
"safe"
boolean あるいは整数値で、デフォルトは FALSE です。FALSE の場合、データベースからの応答を待たずにプログラムを続行します。 TRUE の場合、プログラムはデータベースからの応答を待ち、 追加に失敗したときには MongoCursorException をスローします。
safe が整数値の場合は、 指定した数のマシンで追加が成功するまでは成功したと見なしません (処理がタイムアウトした場合は例外をスローします。wtimeout を参照ください)。 これは、コレクションに設定された w 変数をオーバーライドします。
"fsync"
boolean で、デフォルトは FALSE です。 追加操作がディスク上に同期されるまで成功とは見なさないようにさせます。 TRUE の場合は "安全な" 追加操作が前提となり、 safe の設定を FALSE にオーバーライドします。
safe が設定されている場合は、 保存結果を含む配列を返します。設定されていない場合は、 配列が空でなかったかどうかをあらわす boolean 値を返します (空の配列は追加されません)。
"safe" オプションが設定されていて保存に失敗した場合に MongoCursorException をスローします。
"safe" オプションが 1 より大きい整数値に設定されているとき、 MongoCollection::$wtimeout ミリ秒以内に処理が終わらなかった場合に MongoCursorTimeoutException をスローします。
バージョン | 説明 |
---|---|
1.0.5 | "options" パラメータが追加されました。 |
1.0.9 | "safe" オプションに整数値がわたせるようになり (以前は booleans のみでした)、さらに "fsync" オプションが追加されました。 |
例1 MongoCollection::save() の例
<?php
$obj = array('x' => 1);
// $obj を db に追加します
$collection->save($obj);
// 別のフィールドを追加します
$obj['foo'] = 'bar';
// $obj をもう一度追加することはできません。_id が重複しているからです
$collection->insert($obj);
// 新しいフィールドつきの $obj で上書きします
$collection->save($obj);
?>