# 変更履歴

この拡張モジュールのクラス/関数/メソッドには次のような変更がありました。

### MongoDB PHP Driver 1.5.0

MongoDB 2.6 の新機能に対応しました。たとえば以下のようなものです。

- 集約が、カーソルを返せるようになりました。
- 集約パイプラインの explain が可能になりました。
- コマンドやクエリに、maxTimeMS を設定できるようになりました。
- コマンドベースの新しい MongoDB 書き込み API を、透過的にサポートしました。
- MongoWriteBatch クラスが追加されました (新しい MongoDB 書き込み API を利用します)。
- MongoDB Enterprise の機能 (Kerberos, LDAP, X509 など) に対応しました。
- セカンダリからの読み込みで、受け入れ可能なレイテンシーを調整できるようになりました (secondaryAcceptableLatencyMS)。

このリリースでは、ドキュメントで非推奨とされていた機能のいくつかについて、 実際に非推奨のメッセージを出すようになりました。たとえば、以下のような機能がその対象です。

- Mongo クラスのインスタンス作成
- MongoCursor::slaveOkay() の呼び出し
- MongoCollection の書き込み操作における "wtimeout" オプションおよび "safe" オプション
- コアクラスの public プロパティの操作 ($collection->w など)

> 注意:

> 非推奨とされていた機能の中で、実際に削除されたものは、まだありません。

以下の挙動が、変わりました。

- INI 項目 mongo.native_long を設定すると、32 ビットプラットフォームではエラーとなります。また、64 ビットプラットフォームでのデフォルトが true になりました。

### MongoDB PHP Driver 1.4.0

1.4 系では、MongoDB サーバーへの接続を確立する方法が根本的に変わりました。 PHP ネイティブストリームを使うようになったので、PHP のストリームのオプションがすべて使えます。 さらに、実験的に、ストリームコンテキストのサポートも追加されました。

1.4.x 系ではまた、MongoDB 2.4.x のサポートも追加されています。

特筆すべき改良点はレプリカセットの処理で、中でも、 タイムアウトしたノードやさまざまな要員で到達できないノードの扱いが改善されました。 それ以外にも、ノード間での書き込み確認の問題にも対応しています。 また、SSL を使った接続にも対応し、接続文字列のオプションとして journal や fsync にも対応しました。

### MongoDB PHP Driver 1.3.0

1.3 系では大きな変更が加わりました。 接続処理 が新しく書き直され (同時にプーリングが削除され) たり、 優先読み込み に対応したり、デフォルトの WriteConcerns が確認付きになったりしました。新しく導入されたクラス MongoClient がこれらを扱います。 これは、非推奨になった Mongo クラスのかわりに使うものです。

また、複数の mongos インスタンス (Mongo Shard ルーター) に接続してロードバランシングができるようになりました。

その他の追加機能には、MongoLog のログ機能の改良 (接続処理のデバッグがしやすくなりました) や MongoCollection::aggregate() メソッドによる » Aggregation Framework のサポートなどがあります。

### 既存のメソッドへの変更

既存のメソッドの中で、初期のバージョンから改良が加えられたものをまとめます。

Version | Function | Description
--- | --- | ---
1.7.0 | MongoDB::execute | このメソッドは非推奨になりました。内部で使っている eval コマンドが、MongoDB 3.0 以降で非推奨になったためです。
1.6.0 | MongoClient::__construct | Added support for "SCRAM-SHA-1" in "authMechanism" option.
| MongoCollection::count | 二番目のパラメータが配列 options に変わりました。 limit や skip を二番目、三番目のパラメータとして渡す方法は、非推奨になりました。
| MongoDB::getCollectionNames | 最初のパラメータがオプションの配列に変わりました。以前のバージョンでは最初のパラメータは boolean で、 "includeSystemCollections" オプションの値を指定するものでした。
| MongoDB::listCollections | 最初のパラメータがオプションの配列に変わりました。以前のバージョンでは最初のパラメータは boolean で、 "includeSystemCollections" オプションの値を指定するものでした。
1.5.0 | log_cmd_delete | Only available when connected to MongoDB 2.6.0+
| log_cmd_insert | Only available when connected to MongoDB 2.6.0+
| log_cmd_update | Only available when connected to MongoDB 2.6.0+
| log_write_batch | Only available when connected to MongoDB 2.6.0+
| MongoBinData::__construct | The default changed from 2 (MongoBinData::BYTE_ARRAY) to 0 (MongoBinData::GENERIC).
| MongoClient::__construct | Added "authMechanism", "gssapiServiceName", and "secondaryAcceptableLatencyMS".
| MongoClient::__construct | Added "authSource".
| MongoCollection::aggregate | オプションの引数 options が追加されました。
| MongoCollection::batchInsert | "wTimeoutMS" オプションが追加されました。これは "wtimeout" を置き換えるものです。 "wtimeout" を使うと E_DEPRECATED が発生します。 "socketTimeoutMS" オプションが追加されました。これは "timeout" を置き換えるものです。 "timeout" を使うと E_DEPRECATED が発生します。 "safe" を使うと E_DEPRECATED が発生します。
| MongoCollection::ensureIndex | Renamed 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::findOne | オプションの引数 options が追加されました。
| MongoCollection::group | "maxTimeMS" オプションが追加されました。
| MongoCollection::insert | "wTimeoutMS" オプションが追加されました。これは "wtimeout" を置き換えるものです。 "wtimeout" を使うと E_DEPRECATED が発生します。 "socketTimeoutMS" オプションが追加されました。これは "timeout" を置き換えるものです。 "timeout" を使うと E_DEPRECATED が発生します。 "safe" を使うと E_DEPRECATED が発生します。
| MongoCollection::remove | "wTimeoutMS" オプションが追加されました。これは "wtimeout" を置き換えるものです。 "wtimeout" を使うと E_DEPRECATED が発生します。 "socketTimeoutMS" オプションが追加されました。これは "timeout" を置き換えるものです。 "timeout" を使うと E_DEPRECATED が発生します。 "safe" を使うと E_DEPRECATED が発生します。
| MongoCollection::save | オプション "wTimeoutMS" が追加されました。 これは "wtimeout" を置き換えるものです。 "wtimeout" を使うと、E_DEPRECATED が発生します。 オプション "socketTimeoutMS" が追加されました。 これは "timeout" を置き換えるものです。 "timeout" を使うと、E_DEPRECATED が発生します。 "safe" を使うと、E_DEPRECATED が発生します。
| MongoCollection::toIndexString | このメソッドは非推奨になりました。
| MongoCollection::update | "wTimeoutMS" オプションが追加されました。これは "wtimeout" を置き換えるものです。 "wtimeout" を使うと E_DEPRECATED が発生します。 "socketTimeoutMS" オプションが追加されました。これは "timeout" を置き換えるものです。 "timeout" を使うと E_DEPRECATED が発生します。 "safe" を使うと E_DEPRECATED が発生します。
| MongoCursor::slaveOkay | This method has been deprecated in favour of MongoCursor::setReadPreference and .
| MongoDB::command | オプション "timeout" の名前が "socketTimeoutMS" に変わりました。 "wtimeout" を使うと、E_DEPRECATED が発生します。 参照渡しの hash パラメータが追加されました。
1.4.5 | MongoCursor::batchSize | Before 1.4.5, this method would throw an MongoCursorException if the cursor had already started iterating.
1.4.0 | MongoClient::__construct | Added "ssl" option and support for connecting over SSL. Added "wTimeoutMS" option, which replaces "wTimeout". Emits E_DEPRECATED when "slaveOkay" or "timeout" is used.
| MongoCursor::hint | index 引数に、文字列でインデックス名を指定できるよういなりました。 これより前のバージョンでは、配列またはオブジェクトしか渡せませんでした。
| MongoCursor::setFlag | Support for flag 3 (OPLOG_REPLAY) is added. Versions before 1.4.0 would throw a warning saying that the flag is unsupported.
| MongoDB::createCollection | 1.4.0 より前のバージョンでは、個々のオプションがすべてメソッドの引数になっていました。 旧バージョンのシグネチャは、次のとおりです。 public MongoCollectionMongoDB::createCollection stringname boolcappedFALSE intsize0 intmax0 各オプションの意味は、先ほど options 引数のところで説明したとおりです。
| MongoId::__construct | An exception is thrown when passed invalid string
1.3.4 | MongoClient::__construct | Added "connectTimeoutMS" and "socketTimeoutMS" options.
| MongoCollection::batchInsert | "wtimeout" オプションが追加されました。
| MongoCollection::ensureIndex | Added "wtimeout" option.
| MongoCollection::insert | "wtimeout" オプションが追加されました。
| MongoCollection::remove | "wtimeout" オプションが追加されました。
| MongoCollection::update | "wtimeout" オプションが追加されました。
1.3.3 | MongoClient::getReadPreference | 返り値が変わり、 MongoClient::setReadPreference との整合性があるものになりました。 type の値は数字から文字列に変わり、 type_string は削除され、そして tagsets はコロン区切りの文字列ではなくキー/値のペアでタグを表すようになりました。
| MongoCollection::getReadPreference | 返り値が変わり、 MongoCollection::setReadPreference との整合性があるものになりました。 type の値は数字から文字列に変わり、 type_string は削除され、そして tagsets はコロン区切りの文字列ではなくキー/値のペアでタグを表すようになりました。
| MongoDB::getReadPreference | 返り値が変わり、 MongoDB::setReadPreference との整合性があるものになりました。 type の値は数字から文字列に変わり、 type_string は削除され、そして tagsets はコロン区切りの文字列ではなくキー/値のペアでタグを表すようになりました。
1.3.0 | Mongo::close | connection パラメータが追加されました。 それより前のバージョンでは、このメソッドで閉じられるのは書き込み接続だけでした。
| MongoClient::__construct | Added "readPreference", "readPreferenceTags", "w", and "wTimeout" options.
| MongoCollection::batchInsert | "w" オプションが追加されました。
| MongoCollection::ensureIndex | Added "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::insert | "w" オプションが追加されました。 options パラメータで、boolean だけを渡して確認付きの書き込みを指定することができなくなりました。 同じことをするには array('w' => 1) (MongoClient のデフォルト) としなければなりません。
| MongoCollection::remove | "w" オプションが追加されました。 options パラメータで、boolean だけを渡して "justOne" を指定することができなくなりました。 同じことをするには array('justOne' => true) としなければなりません。
| MongoCollection::update | "w" オプションが追加されました。 options パラメータで、boolean だけを渡して upsert を指定することができなくなりました。 同じことをするには array('upsert'' => true) としなければなりません。
| MongoDB::listCollections | includeSystemCollections が追加されました。
| MongoGridFSCursor::key | ドキュメントの _id を文字列で返すようになりました。 キーは一意であるはずだからです。 これより前のバージョンでは filename を返していました。
1.2.11 | Mongo::getPoolSize | E_DEPRECATED を発行するようになりました。
| Mongo::getSlave | E_DEPRECATED を発行するようになりました。
| Mongo::getSlaveOkay | E_DEPRECATED を発行するようになりました。
| Mongo::poolDebug | Emits E_DEPRECATED when used.
| Mongo::setSlaveOkay | Emits E_DEPRECATED when used.
| Mongo::switchSlave | E_DEPRECATED を発行するようになりました。
| MongoBinData::__construct | Emits E_DEPRECATED when the second argument is not used. The default value for type may change in the near future.
| MongoCollection::ensureIndex | Emits E_DEPRECATED when options is scalar.
| MongoCollection::getSlaveOkay | E_DEPRECATED を発行するようになりました。
| MongoCollection::group | options が scalar のときに E_DEPRECATED を発行するようになりました。
| MongoCollection::remove | options が scalar のときに E_DEPRECATED を発行するようになりました。
| MongoCollection::setSlaveOkay | Emits E_DEPRECATED when used.
| MongoCollection::update | options が scalar のときに E_DEPRECATED を発行するようになりました。
| MongoCursor::doQuery | Emits E_DEPRECATED when used.
| MongoDB::authenticate | E_DEPRECATED を発行するようになりました。 認証情報の詳細をコンストラクタに渡しましょう。
| MongoDB::forceError | E_DEPRECATED を発行するようになりました。
| MongoDB::getSlaveOkay | E_DEPRECATED を発行するようになりました。
| MongoDB::prevError | E_DEPRECATED を発行するようになりました。
| MongoDB::resetError | E_DEPRECATED を発行するようになりました。
| MongoDB::setSlaveOkay | Emits E_DEPRECATED when used.
| MongoPool::getSize | Emits E_DEPRECATED when used.
| MongoPool::info | Emits E_DEPRECATED when used.
| MongoPool::setSize | Emits E_DEPRECATED when used.
1.2.10 | Mongo::getHosts | レプリカセットでない場合もサポートするようになりました。 返される配列の要素に、新たに hostname と port を含むようになりました。
1.2.7 | MongoCollection::batchInsert | "continueOnError" オプションが追加されました。
1.2.5 | MongoGridFS::storeUpload | 二番目のパラメータがメタデータの配列に変わりました。これより前のバージョンでは、 二番目のパラメータはオプションの文字列で、ファイル名を上書きするものでした。
1.2.0 | Mongo::close | 1.2.0 より前のバージョンでは、デフォルトでは持続的接続を使いませんでした。 そして、MongoDB の接続がスコープから抜ければすぐに閉じられていました。 バージョン 1.2.0 からはそうではなくなりました。 close を呼ばないと、高負荷な接続がサーバーを使い切ってしまう可能性があります。
| MongoClient::__construct | Added "username" and "password" options. Removed "persist" option, as all connections are now persistent. It can still be used, but it doesn't affect anything. "persist" If the connection should be persistent. If set, the connection will be persistent. The string representation of the value is used as an ID for the connection, so two instances of MongoClient that are initialized with array("persist" => "foobar") will share the same database connection, whereas an instance initialized with array("persist" => "barbaz") will use a different database connection. The "replicaSet" option now takes a string, not a boolean.
| MongoCollection::ensureIndex | Added "timeout" option.
| MongoCollection::insert | "timeout" オプションが追加されました。
| MongoCollection::remove | "timeout" オプションが追加されました。
| MongoCollection::save | "timeout" オプションが追加されました。
| MongoCollection::update | "timeout" オプションが追加されました。
| MongoDB::command | options パラメータと、そのオプション "timeout" が追加されました。
1.1.0 | MongoCursor::info | 多くのフィールドが追加されました。id (カーソル ID)、 at (現在のドキュメントを表すドライバのカウンタ)、 numReturned (サーバーが現在のバッチで返した件数)、そして server (クエリの送信先のサーバー。 と組み合わせると便利) などです。
1.0.11 | MongoCollection::ensureIndex | The "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::insert | "safe" が設定されている場合は、"not master" エラーで接続を切断するようになりました。
| MongoCollection::remove | "safe" が設定されている場合は、"not master" エラーで接続を切断するようになりました。
| MongoCollection::save | "safe" が設定されている場合は、"not master" エラーで接続を切断するようになりました。
| MongoCollection::update | "safe" が設定されている場合は、"not master" エラーで接続を切断するようになりました。
1.0.10 | MongoCursor::info | started_iterating フィールドが追加されました。boolean で、 このカーソルがクエリ実行前か実行後かを返します。
1.0.9 | MongoClient::__construct | Added "replicaSet" option.
| MongoCollection::batchInsert | "safe" オプションに整数値がわたせるようになりました (以前は boolean のみでした)。 "fsync" オプションが追加されました。
| MongoCollection::insert | "safe" オプションに整数値がわたせるようになりました (以前は boolean のみでした)。 "fsync" オプションが追加されました。 "safe" オプションを使っている場合の返り値の型が配列に変わりました。 配列にはエラー情報が含まれています。"safe" オプションを使わない場合は、今までどおり boolean のままです。
| MongoCollection::remove | "safe" オプションに整数値がわたせるようになりました (以前は boolean のみでした)。 "fsync" オプションが追加されました。 "safe" オプションを使っている場合の返り値の型が配列に変わりました。 配列にはエラー情報が含まれています。"safe" オプションを使わない場合は、今までどおり boolean のままです。
| MongoCollection::save | "fsync" オプションが追加されました。
| MongoCollection::update | "safe" オプションに整数値がわたせるようになりました (以前は boolean のみでした)。 "fsync" オプションが追加されました。 "safe" オプションを使っている場合の返り値の型が配列に変わりました。 配列にはエラー情報が含まれています。"safe" オプションを使わない場合は、今までどおり boolean のままです。
1.0.7 | MongoCollection::count | limit および skip が それぞれ二番目、三番目のパラメータとして追加されました。
1.0.5 | MongoCollection::batchInsert | options パラメータが追加されました。
| MongoCollection::ensureIndex | Added the "name" option to override index name creation.
| MongoCollection::remove | 二番目のパラメータがオプションの配列に変わりました。1.0.5 より前のバージョンでは、二番目のパラメータは "safe" オプションを表す boolean 値でした。
| MongoCollection::save | options パラメータが追加されました。
| MongoCollection::update | "safe" オプションが追加されました。
1.0.2 | MongoClient::__construct | Changed constructor to take an array of options. Pre-1.0.2, the constructor took the following parameters: server The server name. connect Optional boolean parameter specifying if the constructor should connect to the database before returning. Defaults to TRUE. persistent If the connection should be persistent. paired If the connection should be paired.
| MongoCollection::ensureIndex | Changed options parameter from boolean to array. Pre-1.0.2, the second parameter was an optional boolean value specifying a unique index.
| MongoCollection::insert | 二番目のパラメータがオプションの配列に変わりました。1.0.2 より前のバージョンでは、二番目のパラメータは "safe" オプションを表す boolean 値でした。
1.0.1 | MongoCollection::insert | "safe" オプションが設定されていて追加に失敗した場合に MongoCursorException をスローするようになりました。
| MongoCollection::update | options パラメータが boolean から配列に変わりました。 1.0.1 より前のバージョンでは二番目のパラメータはオプションの boolean 値で、upsert を指定するものでした。