Список изменений

Следующие изменения были произведены с классами/функциями/методами данного расширения.

MongoDB PHP Driver 1.5.0

Поддерживает все новые функции для MongoDB 2.6, в том числе:

  • Агрегат теперь может вернуть курсор
  • Агрегационный конвейер теперь можно объяснить
  • Возможно установить maxTimeMS для команд и запросов
  • Прозрачная поддержка нового командного API записи MongoDB
  • Новые классы MongoWriteBatch (с использованием нового API записи MongoDB)
  • Поддержка функций MongoDB Enterprise (например, Kerberos, LDAP, X509)
  • Возможность настройки приемлемой задержки сервера для вторичных чтений (secondaryAcceptableLatencyMS)

В этом выпуске некоторые функциональные возможности драйвера, которые ранее были задокументированы как устаревшие, теперь формально вызывают уведомления об устаревании. Это включает:

  • Создание класса Mongo
  • Вызов MongoCursor::slaveOkay()
  • Параметры "wtimeout" и "safe" для операций записи MongoCollection
  • Управление открытыми свойствами в основных классах (таких как $collection->w)

Замечание:

Ранее устаревшие функции не были удалены.

Изменения в поведении:

  • Установка параметра mongo.native_long INI теперь вызывает ошибку на 32-битных платформах, и по умолчанию имеет значение true для 64-битных платформ.

MongoDB PHP Driver 1.4.0

Серия 1.4 представила фундаментальные изменения в том, как создаются соединения с серверами MongoDB. Драйвер теперь использует собственные потоки PHP, поэтому применяются все обычные параметры потоков PHP. Кроме того, была добавлена экспериментальная поддержка контекста потока.

В серии 1.4.x также добавлена поддержка MongoDB 2.4.x.

Однако наиболее важные улучшения касаются обработки наборов реплик, особенно узлов с истекшим временем ожидания и узлов, которые недоступны по различным причинам. Помимо улучшений в обработке набора реплик, этот выпуск решает проблемы с настройками чтения через узлы mongos. Также добавлена поддержка подключений с поддержкой SSL, а также параметров строки журнала и fsync.

MongoDB PHP Driver 1.3.0

Серия 1.3 представила несколько основных изменений в расширении, таких как полностью переписанная обработка соединений (и удаление механизма объединения), поддержка предпочтений чтения и изменение по умолчанию гарантий записи, которые должны быть подтверждены, путем введения нового класса MongoClient, который служит заменой устаревшему классу Mongo.

Драйвер теперь также поддерживает подключение к нескольким экземплярам mongos (маршрутизатор Mongo Shard) для балансировки нагрузки.

Другие улучшения включают улучшенное ведение журналов для упрощения отладки обработки соединений с MongoLog и поддержку » структуры агрегации с помощью метода MongoCollection::aggregate().

Изменения в существующих методах

Ниже приведен список всех улучшений существующих методов с момента их появления.

VersionFunctionDescription
PECL mongo 1.7.0MongoDB::executeЭтот метод устарел из-за того, что команда лежащий в основе eval устарела в MongoDB 3.0+.
PECL mongo 1.6.0MongoClient::__constructДобавлена поддержка "SCRAM-SHA-1" в опции "authMechanism".
 MongoCollection::countТеперь второй параметр options является массивом опций. limit и skip в качестве второго и третьего параметра, соотвественно, являются устаревшими
 MongoDB::getCollectionNamesИзменен первый параметр, чтобы он был массивом опций. До версии 1.6.0 первым параметром было булево значение, указывающее на параметр "includeSystemCollections".
 MongoDB::listCollectionsИзменен первый параметр, чтобы он был массивом опций. До версии 1.6.0 первым параметром было булево значение, указывающее на параметр "includeSystemCollections".
PECL mongo 1.5.0log_cmd_deleteДоступна только при соединении с MongoDB 2.6.0+
 log_cmd_insertДоступна только при соединении с MongoDB 2.6.0+
 log_cmd_updateДоступна только при соединении с MongoDB 2.6.0+
 log_write_batchДоступно только при подключении к MongoDB 2.6.0+
 MongoBinData::__constructЗначение по умолчанию изменено с 2 (MongoBinData::BYTE_ARRAY) на 0 (MongoBinData::GENERIC).
 MongoClient::__constructДобавлены "authMechanism", "gssapiServiceName" и "secondaryAcceptableLatencyMS".
 MongoClient::__constructДобавлена опция "authSource".
 MongoCollection::aggregateДобавлен необязательный аргумент options
 MongoCollection::batchInsertДобавлена опция "wTimeoutMS", которая заменяет "wtimeout". Выдает E_DEPRECATED, когда используется "wtimeout". Добавлена опция "socketTimeoutMS", которая заменяет "timeout". Выдает E_DEPRECATED, когда используется "timeout". Выдает E_DEPRECATED, когда используется "safe".
 MongoCollection::ensureIndexПереименован параметр "wtimeout" в "wTimeoutMS". Выдает E_DEPRECATED, когда используется "wtimeout". Переименован параметр "timeout" в "socketTimeoutMS". Выдает E_DEPRECATED, когда используется "timeout". Выдает E_DEPRECATED, когда используется "safe".
 MongoCollection::findOneДобавлен необязательный параметр options.
 MongoCollection::groupДобавлена опция "maxTimeMS".
 MongoCollection::insertДобавлена опция "wTimeoutMS", которая заменяет "wtimeout". Выдает E_DEPRECATED, когда используется "wtimeout". Добавлена опция "socketTimeoutMS", которая заменяет "timeout". Выдает E_DEPRECATED, когда используется "timeout". Выдает E_DEPRECATED, когда используется "safe".
 MongoCollection::removeДобавлена опция "wTimeoutMS" в замен устаревшей "wtimeout". Ошибка уровня E_DEPRECATED будет вызвана в случае использования "wtimeout". Добавлена опция "socketTimeoutMS" в замен устаревшей "timeout". Ошибка уровня E_DEPRECATED будет вызвана в случае использования "timeout". Ошибка уровня E_DEPRECATED будет вызвана в случае использования "safe".
 MongoCollection::saveДобавлена опция "wTimeoutMS", которая заменяет "wtimeout". Выдает E_DEPRECATED, когда используется "wtimeout". Добавлена опция "socketTimeoutMS", которая заменяет "timeout". Выдает E_DEPRECATED, когда используется "timeout". Выдает E_DEPRECATED, когда используется "safe".
 MongoCollection::toIndexStringЭтот метод устарел.
 MongoCollection::updateДобавлена опция "wTimeoutMS", которая заменяет "wtimeout". Выдает E_DEPRECATED, когда используется "wtimeout". Добавлена опция "socketTimeoutMS", которая заменяет "timeout". Выдает E_DEPRECATED, когда используется "timeout". Выдает E_DEPRECATED, когда используется "safe".
 MongoCursor::slaveOkayМетод устарел. Используйте вместо него MongoCursor::setReadPreference и .
 MongoDB::commandПереименована опция "timeout" в "socketTimeoutMS". Выдает E_DEPRECATED при использовании "timeout". Добавлен параметр ссылки на hash.
PECL mongo 1.4.5MongoCursor::batchSizeДо версии 1.4.5 этот метод генерировал исключение MongoCursorException, если курсор уже начал итерацию.
PECL mongo 1.4.0MongoClient::__constructДобавлена опция "ssl" и поддержка подключения по SSL. Добавлена опция "wTimeoutMS", которая заменяет "wTimeout". Выдает E_DEPRECATED, при использовании "slaveOkay" или "timeout".
 MongoCursor::hintАргумент index теперь поддерживает имена индексов, как строковые значения. В версиях до 1.4.0 принимались только значения массива или объекта.
 MongoCursor::setFlagДобавлена поддержка флага 3 (OPLOG_REPLAY). Версии до 1.4.0 будут выдавать предупреждение о том, что флаг не поддерживается.
 MongoDB::createCollectionВ версиях до 1.4.0 все параметры были аргументами метода. Синопсис функций в этих старых версиях: public MongoCollectionMongoDB::createCollection stringname boolcappedfalse intsize0 intmax0 Значение параметров такое же, как описано выше в аргументе options.
 MongoId::__constructИсключение выдается при передаче неверной строки
PECL mongo 1.3.4MongoClient::__constructДобавлены опции "connectTimeoutMS" и "socketTimeoutMS".
 MongoCollection::batchInsertДобавлена опция "wtimeout".
 MongoCollection::ensureIndexДобавлена опция "wtimeout".
 MongoCollection::insertДобавлена опция "wtimeout".
 MongoCollection::removeДобавлена опция "wtimeout".
 MongoCollection::updateДобавлена опция "wtimeout".
PECL mongo 1.3.3MongoClient::getReadPreferenceВозвращаемое значение изменилось, чтобы соответствовать MongoClient::setReadPreference. Значение type было изменено с числа на строку, type_string была удалена, и tagsets теперь выражают теги, как пары ключ/значение вместо строк, разделенных двоеточиями.
 MongoCollection::getReadPreferenceВозвращаемое значение было изменено, чтобы соответствовать MongoCollection::setReadPreference. Значение type было изменено с числа на строку, type_string была удалена, и tagsets теперь выражают теги как пары ключ/значение вместо строк, разделенных двоеточиями.
 MongoDB::getReadPreferenceВозвращаемое значение было изменено, чтобы соответствовать MongoDB::setReadPreference. Значение type было изменено с числа на строку, type_string была удалена, и tagsets теперь выражают теги как пары ключ/значение вместо строк, разделенных двоеточиями.
PECL mongo 1.3.0MongoClient::closeПараметр connection к этой функции был добавлен в 1.3.0. До этого этим методом закрывалось только соединение записи.
 MongoClient::__constructДобавлены опции "readPreference", "readPreferenceTags", "w", и "wTimeout".
 MongoCollection::batchInsertДобавлена опция "w".
 MongoCollection::ensureIndexДобавлена опция "w". Параметр options больше не принимает логическое значение для обозначения уникального индекса. Вместо этого это теперь должно быть передано array('unique' => true).
 MongoCollection::insertДобавлена опция "w" option. Параметр options больше не принимает логическое значение для обозначения подтвержденной записи. Вместо этого теперь это должно быть сделано с array('w' => 1) (поведение по умолчанию MongoClient).
 MongoCollection::removeДобавлена опция "w". Параметр options больше не принимает логические значения для определения поведения как "justOne". Вместо этого необходимо использовать array('justOne' => true).
 MongoCollection::updateДобавлена опция "w". Параметр options больше не принимает логическое значение для обозначения слияния. Вместо этого теперь необходимо указывать array('upsert' => true).
 MongoDB::listCollectionsДобавлен параметр includeSystemCollections.
 MongoGridFSCursor::keyВозвращается _id документа, как строковое значение, поскольку ключ должен быть уникальным. До 1.3.0, возвращался параметр filename.
PECL mongo 1.2.11Mongo::getPoolSizeВыдает E_DEPRECATED, при использовании.
 Mongo::getSlaveВыдает E_DEPRECATED, при использовании.
 Mongo::getSlaveOkayВыдает E_DEPRECATED, при использовании.
 Mongo::poolDebugВыдает E_DEPRECATED, при использовании.
 Mongo::setSlaveOkayВыдает E_DEPRECATED, при использовании.
 Mongo::switchSlaveВыдает E_DEPRECATED, при использовании.
 MongoBinData::__constructВыдает E_DEPRECATED, когда второй аргумент не используется. Значение type по умолчанию может измениться в ближайшем будущем.
 MongoCollection::ensureIndexВыдает E_DEPRECATED, когда options являются скалярными.
 MongoCollection::getSlaveOkayВыдает E_DEPRECATED при использовании.
 MongoCollection::groupВыдает E_DEPRECATED, когда используется options, как scalar.
 MongoCollection::removeОшибка уровня E_DEPRECATED если options скалярного типа.
 MongoCollection::setSlaveOkayВыдает E_DEPRECATED при использовании.
 MongoCollection::updateВыдает E_DEPRECATED, когда options являются scalar.
 MongoCursor::doQueryВыдает E_DEPRECATED при использовании.
 MongoDB::authenticateВыдает E_DEPRECATED при использовании. Пожалуйста, передавайте детали аутентификации в конструкторе.
 MongoDB::forceErrorВыдает E_DEPRECATED при использовании.
 MongoDB::getSlaveOkayВыдает E_DEPRECATED при использовании.
 MongoDB::prevErrorВыдает E_DEPRECATED при использовании.
 MongoDB::resetErrorВыдает E_DEPRECATED при использовании.
 MongoDB::setSlaveOkayВыдает E_DEPRECATED при использовании.
 MongoPool::getSizeВыдает E_DEPRECATED, при использовании.
 MongoPool::infoВыдает E_DEPRECATED, при использовании.
 MongoPool::setSizeВыдает E_DEPRECATED, при использовании.
PECL mongo 1.2.10MongoClient::getHostsДобавлена поддержка нерепликазных наборов. Возвращенные элементы массива теперь также включают имя hostname и port.
PECL mongo 1.2.7MongoCollection::batchInsertДобавлена опция "continueOnError".
PECL mongo 1.2.5MongoGridFS::storeUploadИзменен второй параметр на массив метаданных. До 1.2.5 вторым параметром была необязательная строка, переопределяющая имя файла.
PECL mongo 1.2.0MongoClient::closeДо версии 1.2.0 драйвер не использовал постоянные соединения по умолчанию, и все соединения закрывались, как только выход из MongoDB выходил из области действия. Начиная с версии 1.2.0, это больше не так, и плохая идея - вызывать close, так как в итоге вы можете перегружать сервер соединениями под высокой нагрузкой.
 MongoClient::__constructДобавлены опции "username" и "password". Удалена опция "persist", так как все соединения теперь являются постоянными. Ее все еще можно использовать, но это ни на что не влияет. "persist" Когда соединение должно быть постоянным. Если установлено, соединение будет постоянным. Строковое представление значения используется в качестве идентификатора для соединения, поэтому два экземпляра MongoClient, которые инициализируются array("persist" => "foobar"), будут использовать одно и то же соединение с базой данных, тогда как экземпляр, инициализированный array("persist" => "barbaz"), будет использовать другое соединение с базой данных. Опция "replicaSet" теперь принимает строку, а не логическое значение.
 MongoCollection::ensureIndexДобавлена опция "timeout".
 MongoCollection::insertДобавлена опция "timeout".
 MongoCollection::removeДобавлена опция "timeout".
 MongoCollection::saveДобавлена опция "timeout".
 MongoCollection::updateДобавлена опция "timeout".
 MongoDB::commandДобавлен параметр options с одним вариантом: "timeout".
PECL mongo 1.1.0MongoCursor::infoДобавлен ряд других полей, включая id (идентификатор курсора), at (счетчик драйвера для которого документ является текущим), numReturned (число, возвращаемое сервером в текущем пакете) и server (на какой сервер был отправлен запрос) - полезно в сочетании с .
PECL mongo 1.0.11MongoCollection::ensureIndexОпция "safe" запускает первичное аварийное переключение, если это необходимо. MongoException будет выброшено, если имя индекса (либо сгенерированное, либо установленное) длиннее 128 байт.
 MongoCollection::insertОтключается при ошибках "not master", если установлен "safe".
 MongoCollection::removeОшибки сброса соединения на "не мастере" если установлена "safe".
 MongoCollection::saveОтключается при ошибках "not master", если установлен "safe".
 MongoCollection::updateОтключается при ошибках "not master", если установлен "safe".
PECL mongo 1.0.10MongoCursor::infoДобавлено поле started_iterating, логическое значение, указывающее, является ли курсор пре- или пост-запросом.
PECL mongo 1.0.9MongoClient::__constructДобавлена опция "replicaSet".
 MongoCollection::batchInsertДобавлена возможность передавать целые числа в опцию "safe", которая ранее принимала только логические значения. Добавлена опция "fsync".
 MongoCollection::insertДобавлена возможность передавать целые числа в опцию "safe", которая ранее принимала только логические значения. Добавлена опция "fsync". Тип возвращаемого значения был изменен на массив, содержащий информацию об ошибке, если используется параметр "safe". В противном случае логическое значение возвращается, как и раньше.
 MongoCollection::removeДобавлена возможность передавать целые числа в опцию "safe", которая ранее принимала только логические значения. Добавлена опция "fsync". Тип возвращаемого значения изменен на массив, содержащий информацию об ошибке если установлена опция "safe". В протовном случае, как и раньше, возвращается логическое значения.
 MongoCollection::saveДобавлена опция "fsync".
 MongoCollection::updateДобавлена возможность передавать целые числа в опцию "safe", которая ранее принимала только логические значения. Добавлена опция "fsync". Тип возвращаемого значения был изменен на массив, содержащий информацию об ошибке, если используется параметр "safe". В противном случае логическое значение возвращается, как и раньше.
PECL mongo 1.0.7MongoCollection::countДобавлены limit и skip как второй и третий параметр соотвественно
PECL mongo 1.0.5MongoCollection::batchInsertДобавлен параметр options.
 MongoCollection::ensureIndexДобавлена опция "name" для переопределения создания имени индекса.
 MongoCollection::removeВторой парамент теперь принимает массив опция. До версии 1.0.5 второй параметр принимал логическое значение, устанавливавшее опцию "safe".
 MongoCollection::saveДобавлен параметр options.
 MongoCollection::updateДобавлена опция "safe".
PECL mongo 1.0.2MongoClient::__constructИзменен конструктор, чтобы принимать массив опций. До версии 1.0.2 конструктор принимал следующие параметры: server Имя сервера. connect Необязательный логический параметр, указывающий, должен ли конструктор подключаться к базе данных перед возвратом. По умолчанию true. persistent Если соединение должно быть постоянным. paired Если соединение должно быть сопряжено.
 MongoCollection::ensureIndexИзменен параметр options с логического на массив. До версии 1.0.2 вторым параметром было необязательное логическое значение, указывающее уникальный индекс.
 MongoCollection::insertИзменен второй параметр, чтобы он был массивом опций. До версии 1.0.2 вторым параметром был логический параметр, указывающий "safe" параметр.
PECL mongo 1.0.1MongoCollection::insertВыдает исключение MongoCursorException, если установлена опция "safe" и вставка завершается неудачно.
 MongoCollection::updateИзменен параметр options с логического на массив. До версии 1.0.1 вторым параметром было необязательное логическое значение, определяющее слияние.