MongoCollection::save
(PECL mongo >=0.9.0)
MongoCollection::save — Saves a document to this collection
Описание
If the object is from the database, update the existing database object, otherwise insert this object.
Список параметров
-
a
-
Array or object to save. If an object is used, it may not have protected or private properties.
Замечание:
If the parameter does not have an _id key or property, a new MongoId instance will be created and assigned to it. See MongoCollection::insert() for additional information on this behavior.
-
options
-
Options for the save.
"fsync"
Булевое значение, по умолчанию равно
FALSE
. Если журналлирование включено, работает точно так же как и "j". Если же журналирование не включено, то вынуждает выполнить синхронизацию вставленных данных на диск перед возвращением успешного статуса. Если установлено вTRUE
, то будет использована синхронизированная вставка данных, и опция w будет установлена в 0.Замечание:
Данная опция устарела. Используйте вместо нее опцию "j".
"j"
Булевое значение, по умолчанию
FALSE
. Форсирует синхронизацию вставки записи с журналом перед возвращением успешного статуса. Если установлено вTRUE
, то будет неявно применена подтвержденная вставка и перезаписана установка опции w в 0."socketTimeoutMS"
Integer, defaults to MongoCursor::$timeout. If acknowledged writes are used, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.
"w"
Смотрите WriteConcerns. Значение по умолчанию для MongoClient является 1.
"wtimeout"
Время ожидания подтверждения WriteConcern. По умолчанию составляет 10000 миллисекунд для класса MongoClient
"wTimeoutMS"
How long to wait for write concern acknowledgement. The default value for MongoClient is 10000 milliseconds.
"safe"
Устарело. Пожалуйста, используйте WriteConcern опцию w.
"timeout"
Целое значение, по умолчанию равно MongoCursor::$timeout. Если используются подтвержденные операции записи, то значение обозначает количество миллисекунд, в течение которого клиент будет ожидать ответа от базы данных. Если база данных не ответит в течение указанного периода, то будет брошено исключение MongoCursorTimeoutException.
Возвращаемые значения
If w
was set, returns an array containing the status of the save.
Otherwise, returns a boolean representing if the array was not empty (an empty array will not
be inserted).
Ошибки
Throws MongoException if the inserted document is empty or if it contains zero-length keys. Attempting to insert an object with protected and private properties will cause a zero-length key error.
Бросает исключение MongoCursorException, если установлена опция "w" и запись не удалась.
Бросает исключение MongoCursorTimeoutException, если опция "w" установлена в значение больше единицы и операция занимает более, чем MongoCursor::$timeout миллисекунд. Операция на сервере не прекращается, это таймаут клиента. Операция в MongoCollection::$wtimeout считается в миллисекундах.
Список изменений
Версия | Описание |
---|---|
1.5.0 | Renamed the "wtimeout" option to "wTimeoutMS". |
1.5.0 | Renamed the "timeout" option to "socketTimeoutMS". |
1.2.0 | Added "timeout" option. |
1.0.11 | Disconnects on "not master" errors if "safe" is set. |
1.0.9 |
Added ability to pass integers to the "safe" option, which previously only accepted booleans. Added "fsync" option. |
1.0.5 | Added options parameter. |
Примеры
Пример #1 MongoCollection::save() example
<?php
$obj = array('x' => 1);
// insert $obj into the db
$collection->save($obj);
var_dump($obj);
// add another field
$obj['foo'] = 'bar';
// $obj cannot be inserted again, causes duplicate _id error
$collection->insert($obj);
// save updates $obj with the new field
$collection->save($obj);
?>
Результатом выполнения данного примера будет что-то подобное:
array(2) { ["x"]=> int(1) ["_id"]=> object(MongoId)#4 (1) { ["$id"]=> string(24) "50b6afe544415ed606000000" } }
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- MongoDB
- Базовые классы
- Функция MongoCollection::aggregate() - Perform an aggregation using the aggregation framework
- Функция MongoCollection::aggregateCursor() - Execute an aggregation pipeline command and retrieve results through a cursor
- Функция MongoCollection::batchInsert() - Inserts multiple documents into this collection
- Функция MongoCollection::__construct() - Creates a new collection
- Функция MongoCollection::count() - Counts the number of documents in this collection
- Функция MongoCollection::createDBRef() - Creates a database reference
- Функция MongoCollection::createIndex() - Creates an index on the specified field(s) if it does not already exist.
- Функция MongoCollection::deleteIndex() - Deletes an index from this collection
- Функция MongoCollection::deleteIndexes() - Delete all indices for this collection
- Функция MongoCollection::distinct() - Retrieve a list of distinct values for the given key across a collection.
- Функция MongoCollection::drop() - Drops this collection
- Функция MongoCollection::ensureIndex() - Creates an index on the specified field(s) if it does not already exist.
- MongoCollection::find
- Функция MongoCollection::findAndModify() - Update a document and return it
- Функция MongoCollection::findOne() - Queries this collection, returning a single element
- Функция MongoCollection::__get() - Gets a collection
- Функция MongoCollection::getDBRef() - Fetches the document pointed to by a database reference
- Функция MongoCollection::getIndexInfo() - Returns information about indexes on this collection
- Функция MongoCollection::getName() - Returns this collection's name
- Функция MongoCollection::getReadPreference() - Get the read preference for this collection
- Функция MongoCollection::getSlaveOkay() - Get slaveOkay setting for this collection
- Функция MongoCollection::getWriteConcern() - Get the write concern for this collection
- Функция MongoCollection::group() - Performs an operation similar to SQL's GROUP BY command
- Функция MongoCollection::insert() - Inserts a document into the collection
- Функция MongoCollection::parallelCollectionScan() - Returns an array of cursors to iterator over a full collection in parallel
- Функция MongoCollection::remove() - Remove records from this collection
- Функция MongoCollection::save() - Saves a document to this collection
- Функция MongoCollection::setReadPreference() - Set the read preference for this collection
- Функция MongoCollection::setSlaveOkay() - Change slaveOkay setting for this collection
- Функция MongoCollection::setWriteConcern() - Set the write concern for this database
- Функция MongoCollection::toIndexString() - Converts keys specifying an index to its identifying string
- Функция MongoCollection::__toString() - String representation of this collection
- Функция MongoCollection::update() - Update records based on a given criteria
- Функция MongoCollection::validate() - Validates this collection
Коментарии
Same as with method insert(), it is worth noting that creating a reference to $obj will have the same effect as $obj being a reference itself, i.e. no _id field will be added.
<?php
$a = &$obj;
$m = new MongoClient;
$collection = $m->test->phpmanual;
$obj = array('x' => 1);
// Suppose you create a reference for some reason
$a = &$obj;
$collection->save($obj);
var_dump($obj);
// prints: array(1) { ["x"]=> int(1) }
?>