更新日志

对本扩展的类/函数/方法有以下更新。

MongoDB PHP Driver 1.5.0

It supports all new features for MongoDB 2.6, including:

  • Aggregate can now return a cursor
  • Aggregation pipelines can now be explained
  • Possible to set maxTimeMS for commands and queries
  • Transparent support for the new command-based MongoDB write API
  • New MongoWriteBatch classes (using the new MongoDB write API)
  • Support for MongoDB Enterprise features (e.g. Kerberos, LDAP, X509)
  • Option to tune acceptable server latency for secondary reads (secondaryAcceptableLatencyMS)

With this release, some driver functionality which was previously documented as deprecated will now formally raise deprecation notices. This includes:

  • Instantiating the Mongo class
  • Calling MongoCursor::slaveOkay()
  • "wtimeout" and "safe" options for MongoCollection write operations
  • Manipulating public properties on core classes (such as $collection->w)

注意:

No previously deprecated features have been removed.

Changes in behaviour:

  • Setting the mongo.native_long INI setting now raises an error on 32-bit platforms, and now defaults to true for 64-bit platforms.

MongoDB PHP Driver 1.4.0

The 1.4 series introduced fundemental changes in how connections are created to the MongoDB servers. The driver now utilizes PHP native streams, so all normal PHP stream options apply. Furthermore, an experimental Stream Context Support was added.

The 1.4.x series also added support for MongoDB 2.4.x.

The most important improvements however deal with the handling of replica sets, especially nodes that timeout and nodes that are unreachable for various reasons. Besides the improvements to replica set handling, this release addresses issues with read preferences through mongos nodes. It also adds support for SSL enabled connections as well as journal and fsync connection string options.

MongoDB PHP Driver 1.3.0

The 1.3 series introduced several major changes to the extension such as completely rewritten connection handling (and removal of the pooling mechanism), support for ReadPreferences and change the default WriteConcerns to be acknowledged by introducing a new class MongoClient which serves as a replacement class for the now deprecated Mongo class.

The driver now also supports connecting to multiple mongos instances (the Mongo Shard router) for loadbalancing.

Other enhancements include improved logging for easier connection handling debugging with MongoLog and support for the » Aggregation Framework via the MongoCollection::aggregate() method.

Changes to existing methods

Following is a list of all improvements to existing methods since their inception.

VersionFunctionDescription
PECL mongo 1.6.0MongoDB::getCollectionNamesChanged first parameter to be an array of options. Pre-1.6.0, the first parameter was a boolean indicating the "includeSystemCollections" option.
 MongoDB::listCollectionsChanged first parameter to be an array of options. Pre-1.6.0, the first parameter was a boolean indicating the "includeSystemCollections" option.
PECL mongo 1.5.0log_cmd_deleteOnly available when connected to MongoDB 2.6.0+
 log_cmd_insertOnly available when connected to MongoDB 2.6.0+
 log_cmd_updateOnly available when connected to MongoDB 2.6.0+
 log_write_batchOnly available when connected to MongoDB 2.6.0+
 MongoCollection::aggregateAdded optional options argument
 MongoCollection::batchInsertAdded the "wTimeoutMS" option, which replaces "wtimeout". Emits E_DEPRECATED when "wtimeout" is used. Added the "socketTimeoutMS" option, which replaces "timeout". Emits E_DEPRECATED when "timeout" is used. Emits E_DEPRECATED when "safe" is used.
 MongoCollection::ensureIndexRenamed the "wtimeout" option to "wTimeoutMS". Emits E_DEPRECATED when "wtimeout" is used. Renamed the "timeout" option to "socketTimeoutMS". Emits E_DEPRECATED when "timeout" is used. Emits E_DEPRECATED when "safe" is used.
 MongoCollection::findOneAdded optional options argument.
 MongoCollection::groupAdded "maxTimeMS" option.
 MongoCollection::toIndexStringThis method has been deprecated.
 MongoCollection::updateAdded the "wTimeoutMS" option, which replaces "wtimeout". Emits E_DEPRECATED when "wtimeout" is used. Added the "socketTimeoutMS" option, which replaces "timeout". Emits E_DEPRECATED when "timeout" is used. Emits E_DEPRECATED when "safe" is used.
 MongoCursor::slaveOkayThis method has been deprecated in favour of MongoCursor::setReadPreference and .
PECL mongo 1.4.5MongoCursor::batchSizeBefore 1.4.5, this method would throw an MongoCursorException if the cursor had already started iterating.
PECL mongo 1.4.0MongoCursor::hintThe index argument now supports index names as string values. In versions before 1.4.0, only array or object values were accepted.
 MongoCursor::setFlagSupport for flag 3 (OPLOG_REPLAY) is added. Versions before 1.4.0 would throw a warning saying that the flag is unsupported.
PECL mongo 1.3.4MongoCollection::batchInsertAdded "wtimeout" option.
 MongoCollection::ensureIndexAdded "wtimeout" option.
 MongoCollection::updateAdded "wtimeout" option.
PECL mongo 1.3.3MongoCollection::getReadPreferenceThe return value has changed to be consistent with MongoCollection::setReadPreference. The type value was changed from a number to a string, type_string was removed, and tagsets now expresses tags as key/value pairs instead of colon-delimited strings.
 MongoDB::getReadPreferenceThe return value has changed to be consistent with MongoDB::setReadPreference. The type value was changed from a number to a string, type_string was removed, and tagsets now expresses tags as key/value pairs instead of colon-delimited strings.
PECL mongo 1.3.0MongoCollection::batchInsertAdded "w" option.
 MongoCollection::ensureIndexAdded "w" option. The options parameter no longer accepts a boolean to signify a unique index. Instead, this now has to be done with array('unique' => true).
 MongoCollection::updateAdded "w" option. The options parameter no longer accepts a boolean to signify an upsert. Instead, this now has to be done with array('upsert' => true).
 MongoDB::listCollectionsAdded the includeSystemCollections parameter.
 MongoGridFSCursor::keyThe document's _id is returned as a string value, since the key should be unique. Pre-1.3.0, filename was returned.
PECL mongo 1.2.11Mongo::getPoolSizeEmits E_DEPRECATED when used.
 Mongo::getSlaveEmits E_DEPRECATED when used.
 Mongo::getSlaveOkayEmits E_DEPRECATED when used.
 Mongo::poolDebugEmits E_DEPRECATED when used.
 Mongo::setSlaveOkayEmits E_DEPRECATED when used.
 Mongo::switchSlaveEmits E_DEPRECATED when used.
 MongoCollection::ensureIndexEmits E_DEPRECATED when options is scalar.
 MongoCollection::getSlaveOkayEmits E_DEPRECATED when used.
 MongoCollection::groupEmits E_DEPRECATED when options is scalar.
 MongoCollection::setSlaveOkayEmits E_DEPRECATED when used.
 MongoCollection::updateEmits E_DEPRECATED when options is scalar.
 MongoCursor::doQueryEmits E_DEPRECATED when used.
 MongoDB::forceErrorEmits E_DEPRECATED when used.
 MongoDB::getSlaveOkayEmits E_DEPRECATED when used.
 MongoDB::prevErrorEmits E_DEPRECATED when used.
 MongoDB::resetErrorEmits E_DEPRECATED when used.
 MongoDB::setSlaveOkayEmits E_DEPRECATED when used.
 MongoPool::getSizeEmits E_DEPRECATED when used.
 MongoPool::infoEmits E_DEPRECATED when used.
 MongoPool::setSizeEmits E_DEPRECATED when used.
PECL mongo 1.2.7MongoCollection::batchInsertAdded "continueOnError" option.
PECL mongo 1.2.5MongoGridFS::storeUploadChanged second parameter to an array of metadata. Pre-1.2.5, the second parameter was an optional string overriding the filename.
PECL mongo 1.2.0MongoCollection::ensureIndexAdded "timeout" option.
 MongoCollection::updateAdded "timeout" option.
PECL mongo 1.1.0MongoCursor::infoAdded a number of other fields, including id (the cursor id), at (the driver's counter of which document is current), numReturned (the number returned by the server in the current batch), and server (which server the query was sent to—useful in conjunction with .
PECL mongo 1.0.11MongoCollection::ensureIndexThe "safe" option will trigger a primary failover, if necessary. MongoException will be thrown if the index name (either generated or set) is longer than 128 bytes.
 MongoCollection::updateDisconnects on "not master" errors if "safe" is set.
PECL mongo 1.0.10MongoCursor::infoAdded started_iterating field, a boolean indicating if cursor is pre- or post-query.
PECL mongo 1.0.9MongoCollection::batchInsertAdded ability to pass integers to the "safe" option, which previously only accepted booleans. Added "fsync" option.
 MongoCollection::updateAdded ability to pass integers to the "safe" option, which previously only accepted booleans. Added "fsync" option. The return type was changed to be an array containing error information if the "safe" option is used. Otherwise, a boolean is returned as before.
PECL mongo 1.0.5MongoCollection::batchInsertAdded options parameter.
 MongoCollection::ensureIndexAdded the "name" option to override index name creation.
 MongoCollection::updateAdded "safe" option.
PECL mongo 1.0.2MongoCollection::ensureIndexChanged options parameter from boolean to array. Pre-1.0.2, the second parameter was an optional boolean value specifying a unique index.
PECL mongo 1.0.1MongoCollection::updateChanged options parameter from boolean to array. Pre-1.0.1, the second parameter was an optional boolean value specifying an upsert.
1.5.0MongoBinData::__construct默认值从 2 (MongoBinData::BYTE_ARRAY) 改成 0 (MongoBinData::GENERIC)。
 MongoCollection::save增加 "wTimeoutMS" 选项来代替 "wtimeout"。 使用 "wtimeout" 时出现 E_DEPRECATED 错误。 新增 "socketTimeoutMS" 选项来代替 "timeout"。 使用 "timeout" 时出现 E_DEPRECATED 错误。 使用 "safe" 时出现 E_DEPRECATED 错误。
1.4.0MongoDB::createCollection1.4.0以前的版本里,所有选项都是这个方法的参数。之前版本这个方法的签名是这样的: public MongoCollectionMongoDB::createCollection stringname boolcappedfalse intsize0 intmax0 参数的意义与现在版本的 options 参数相同。
 MongoId::__construct传入无效字符将抛出异常
1.3.4MongoClient::__construct添加了 "connectTimeoutMS" 和 "socketTimeoutMS" 选项。
1.3.3MongoClient::getReadPreference返回的值修改为兼容 MongoClient::setReadPreference。 type 的值从数组改成字符串,删除了 type_string,并且 tagsets 现在以键值表示的标签而不是冒号分隔的字符串。
1.3.0MongoClient::close在 1.3.0 版本中,为这个函数添加了 connection 参数。 在此之前,直邮写入连接才会被这个方法关闭。
 MongoClient::__construct添加了 "readPreference"、 "readPreferenceTags"、"w" 和 "wTimeout" 选项。
 MongoCollection::insertoptions 参数不再接受 boolean 来标识一个确认的写入。 现在,你可以通过 array('w' => 1) 设置( MongoClient 默认的行为)
 MongoCollection::removeoptions 参数不再接受 boolean 值来代表 "justOne"。 现在,必须使用 array('justOne' => true) 作为替代。
1.2.11MongoBinData::__construct没有使用第二个参数时产生 E_DEPRECATED。 type 的默认值在近期的功能里可能会改变。
 MongoCollection::remove当 options 是 scalar 时产生一个 E_DEPRECATED 警告。
 MongoDB::authenticate使用时产生 E_DEPRECATED。 请将验证细节传入到构造器。
1.2.10MongoClient::getHosts对非集群的支持。 返回的数组元素现在也包括了 hostname 和 port。
1.2.0MongoClient::close在版本 1.2.0 之前,这个驱动默认不会使用持久连接,所有连接会在作用域结束时关闭。 由于版本 1.2.0 情况不再如此,所以调用 close 会是一个坏主意,在服务器有较高负载时可能会造成更高的压力。
 MongoClient::__construct添加了 "username" 和 "password" 选项。 移除了 "persist" 选项,所有的连接都是持久的。它仍旧能够使用,但是不起作用。 "persist" 是否应该是持久连接。如果设置了,连接会是持久连接。 字符形式的值将会用于连接的 ID。所以两个以 array("persist" => "foobar") 初始化的 MongoClient 实例会共享一个数据库连接,以 array("persist" => "barbaz")初始化的实例则使用不同的数据库连接。 "replicaSet" 选项现在支持一个字符串,而不是布尔值。
 MongoCollection::insert增加了 "timeout" 选项。
 MongoCollection::remove添加 "timeout" 选项。
 MongoCollection::save增加 "timeout" 选项。
 MongoDB::command添加 options 参数,和一个选项:"timeout"。
1.0.11MongoCollection::insert如果设置了 "safe",出现 "not master" 错误时断开连接。
 MongoCollection::remove在设置了 "safe" 之后,将在出现 "not master" 错误时断开连接。
 MongoCollection::save设置 "safe" 时,当出现 "not master" 错误时主动断开连接。
1.0.9MongoClient::__construct添加了 "replicaSet" 选项。
 MongoCollection::insert"safe" 选项接受 integer 值,之前只接受 boolean 值。 增加 "fsync" 选项。 如果设置了 "safe" 选项,返回类型改成包含错误信息的 array。 否则,和之前一样返回 boolean。
 MongoCollection::remove添加了 "safe" 选项对 integer 的支持,之前只接受 boolean 值。 添加了 "fsync" 选项。 当使用了 "safe" 选项时将会返回包含错误信息的数组。 否则和之前一样返回一个 boolean。
 MongoCollection::save增加 "fsync" 选项。
1.0.7MongoCollection::count添加了 limit 和 skip 参数。
1.0.5MongoCollection::insert修改第二个参数为选项数组。在 1.0.5 之前,第二个参数是 boolean,指示 "safe" 选项。
 MongoCollection::remove修改第二个参数为选项的 array。在 1.0.5 之前,第二个选项是 boolean 值, 代表了 "safe" 选项。
 MongoCollection::save增加 options 参数。
1.0.2MongoClient::__construct修改构造器支持选修数组。在 1.0.2 之前,构造器接受以下参数: server 服务器名。 connect 可选的 boolean 参数指定了构造器是否应该在返回前连接到数据库。默认为 true。 persistent 连接是否应该是持久的。 paired 连接是否应该为 paired 模式。
1.0.1MongoCollection::insert如果设置了 "safe" 选项并且插入失败了,将会抛出 MongoCursorException。