Mongo
PHP Manual

変更履歴

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

MongoDB PHP Driver 1.5.0

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

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

注意:

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

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

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 のサポートなどがあります。

既存のメソッドへの変更

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

VersionFunctionDescription
1.7.0MongoDB::executeこのメソッドは非推奨になりました。内部で使っている eval コマンドが、MongoDB 3.0 以降で非推奨になったためです。
1.6.0MongoCollection::count二番目のパラメータが配列 options に変わりました。 limit や skip を二番目、三番目のパラメータとして渡す方法は、非推奨になりました。
 MongoDB::getCollectionNames最初のパラメータがオプションの配列に変わりました。以前のバージョンでは最初のパラメータは boolean で、 "includeSystemCollections" オプションの値を指定するものでした。
 MongoDB::listCollections最初のパラメータがオプションの配列に変わりました。以前のバージョンでは最初のパラメータは boolean で、 "includeSystemCollections" オプションの値を指定するものでした。
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+
 MongoBinData::__constructデフォルトが 2 (MongoBinData::BYTE_ARRAY) から 0 (MongoBinData::GENERIC) に変わりました。
 Mongo::__construct"authSource" が追加されました。
 Mongo::__construct"authMechanism"、"gssapiServiceName" および "secondaryAcceptableLatencyMS" が追加されました。
 MongoCollection::aggregateオプションの引数 options が追加されました。
 MongoCollection::batchInsert"wTimeoutMS" オプションが追加されました。これは "wtimeout" を置き換えるものです。 "wtimeout" を使うと E_DEPRECATED が発生します。 "socketTimeoutMS" オプションが追加されました。これは "timeout" を置き換えるものです。 "timeout" を使うと E_DEPRECATED が発生します。 "safe" を使うと E_DEPRECATED が発生します。
 MongoCollection::ensureIndex"wTimeoutMS" オプションが追加されました。これは "wtimeout" を置き換えるものです。 "wtimeout" を使うと E_DEPRECATED が発生します。 "socketTimeoutMS" オプションが追加されました。これは "timeout" を置き換えるものです。 "timeout" を使うと E_DEPRECATED が発生します。 "safe" を使うと E_DEPRECATED が発生します。
 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このメソッドは非推奨になりました。かわりに MongoCursor::setReadPreference と を使いましょう。
 MongoDB::commandオプション "timeout" の名前が "socketTimeoutMS" に変わりました。 "wtimeout" を使うと、E_DEPRECATED が発生します。 参照渡しの hash パラメータが追加されました。
1.4.5MongoCursor::batchSize1.4.5 より前のバージョンでは、このメソッドは、 カーソルの反復処理が始まっている場合に MongoCursorException をスローしていました。
1.4.0Mongo::__construct"ssl" オプションが追加されました。これは SSL 接続 をサポートするものです。 "wTimeoutMS" オプションが追加されました。これは "wTimeout" の代替です。 "slaveOkay" や "timeout" を使うと E_DEPRECATED が発生します。
 MongoCursor::hintindex 引数に、文字列でインデックス名を指定できるよういなりました。 これより前のバージョンでは、配列またはオブジェクトしか渡せませんでした。
 MongoCursor::setFlagフラグ 3 (OPLOG_REPLAY) をサポートするようになりました。 以前のバージョンでは、このフラグには対応していないという警告が出ていました。
 MongoDB::createCollection1.4.0 より前のバージョンでは、個々のオプションがすべてメソッドの引数になっていました。 旧バージョンのシグネチャは、次のとおりです。 public MongoCollectionMongoDB::createCollection stringname boolcappedFALSE intsize0 intmax0 各オプションの意味は、先ほど options 引数のところで説明したとおりです。
 MongoId::__construct無効な文字列を渡したときに例外をスローするようになりました。
1.3.4Mongo::__construct"connectTimeoutMS" および "socketTimeoutMS" オプションが追加されました。
 MongoCollection::batchInsert"wtimeout" オプションが追加されました。
 MongoCollection::ensureIndex"wtimeout" オプションが追加されました。
 MongoCollection::insert"wtimeout" オプションが追加されました。
 MongoCollection::remove"wtimeout" オプションが追加されました。
 MongoCollection::update"wtimeout" オプションが追加されました。
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 はコロン区切りの文字列ではなくキー/値のペアでタグを表すようになりました。
1.3.0Mongo::closeconnection パラメータが追加されました。 それより前のバージョンでは、このメソッドで閉じられるのは書き込み接続だけでした。
 Mongo::__construct"readPreference"、 "readPreferenceTags"、"w" および "wTimeout" オプションが追加されました。
 MongoCollection::batchInsert"w" オプションが追加されました。
 MongoCollection::ensureIndex"w" オプションが追加されました。 options パラメータで、boolean だけを渡してユニークインデックスを指定することができなくなりました。 同じことをするには 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::listCollectionsincludeSystemCollections が追加されました。
 MongoGridFSCursor::keyドキュメントの _id を文字列で返すようになりました。 キーは一意であるはずだからです。 これより前のバージョンでは filename を返していました。
1.2.11Mongo::getPoolSizeE_DEPRECATED を発行するようになりました。
 Mongo::getSlaveE_DEPRECATED を発行するようになりました。
 Mongo::getSlaveOkayE_DEPRECATED を発行するようになりました。
 Mongo::poolDebugE_DEPRECATED を発行するようになりました。
 Mongo::setSlaveOkayE_DEPRECATED を発行するようになりました。
 Mongo::switchSlaveE_DEPRECATED を発行するようになりました。
 MongoBinData::__construct二番目の引数を省略すると E_DEPRECATED を発行します。 type のデフォルト値は近い将来変わる見込みです。
 MongoCollection::ensureIndexoptions が scalar のときに E_DEPRECATED を発行するようになりました。
 MongoCollection::getSlaveOkayE_DEPRECATED を発行するようになりました。
 MongoCollection::groupoptions が scalar のときに E_DEPRECATED を発行するようになりました。
 MongoCollection::removeoptions が scalar のときに E_DEPRECATED を発行するようになりました。
 MongoCollection::setSlaveOkayE_DEPRECATED を発行するようになりました。
 MongoCollection::updateoptions が scalar のときに E_DEPRECATED を発行するようになりました。
 MongoCursor::doQueryE_DEPRECATED を発行するようになりました。
 MongoDB::authenticateE_DEPRECATED を発行するようになりました。 認証情報の詳細をコンストラクタに渡しましょう。
 MongoDB::forceErrorE_DEPRECATED を発行するようになりました。
 MongoDB::getSlaveOkayE_DEPRECATED を発行するようになりました。
 MongoDB::prevErrorE_DEPRECATED を発行するようになりました。
 MongoDB::resetErrorE_DEPRECATED を発行するようになりました。
 MongoDB::setSlaveOkayE_DEPRECATED を発行するようになりました。
 MongoPool::getSizeE_DEPRECATED を発行するようになりました。
 MongoPool::infoE_DEPRECATED を発行するようになりました。
 MongoPool::setSizeE_DEPRECATED を発行するようになりました。
1.2.10Mongo::getHostsレプリカセットでない場合もサポートするようになりました。 返される配列の要素に、新たに hostname と port を含むようになりました。
1.2.7MongoCollection::batchInsert"continueOnError" オプションが追加されました。
1.2.5MongoGridFS::storeUpload二番目のパラメータがメタデータの配列に変わりました。これより前のバージョンでは、 二番目のパラメータはオプションの文字列で、ファイル名を上書きするものでした。
1.2.0Mongo::close1.2.0 より前のバージョンでは、デフォルトでは持続的接続を使いませんでした。 そして、MongoDB の接続がスコープから抜ければすぐに閉じられていました。 バージョン 1.2.0 からはそうではなくなりました。 close を呼ばないと、高負荷な接続がサーバーを使い切ってしまう可能性があります。
 Mongo::__construct"username" および "password" オプションが追加されました。 "persist" オプションが削除されました。すべての接続は持続的な接続となります。 今でも使うことはできますが、何の影響も及ぼしません。 "persist" 持続的な接続を行うかどうか。これを設定すると、接続が持続的なものとなります。 文字列の値を接続 ID として使うので、 array("persist" => "foobar") で初期化した Mongo のインスタンスがふたつあれば、 それは同じデータベース接続をあらわします。一方、 array("persist" => "barbaz") で初期化したインスタンスは別のデータベース接続を使います。 "replicaSet" オプションは、boolean ではなく文字列を受け取るようになりました。
 MongoCollection::ensureIndex"timeout" オプションが追加されました。
 MongoCollection::insert"timeout" オプションが追加されました。
 MongoCollection::remove"timeout" オプションが追加されました。
 MongoCollection::save"timeout" オプションが追加されました。
 MongoCollection::update"timeout" オプションが追加されました。
 MongoDB::commandoptions パラメータと、そのオプション "timeout" が追加されました。
1.1.0MongoCursor::info多くのフィールドが追加されました。id (カーソル ID)、 at (現在のドキュメントを表すドライバのカウンタ)、 numReturned (サーバーが現在のバッチで返した件数)、そして server (クエリの送信先のサーバー。 と組み合わせると便利) などです。
1.0.11MongoCollection::ensureIndex"safe" は必要に応じてプライマリのフェイルオーバーを行うようになりました。 インデックス名 (自動生成されたものあるいは設定したもののどちらでも) の長さが 128 バイトを超えた場合に MongoException をスローするようになりました。
 MongoCollection::insert"safe" が設定されている場合は、"not master" エラーで接続を切断するようになりました。
 MongoCollection::remove"safe" が設定されている場合は、"not master" エラーで接続を切断するようになりました。
 MongoCollection::save"safe" が設定されている場合は、"not master" エラーで接続を切断するようになりました。
 MongoCollection::update"safe" が設定されている場合は、"not master" エラーで接続を切断するようになりました。
1.0.10MongoCursor::infostarted_iterating フィールドが追加されました。boolean で、 このカーソルがクエリ実行前か実行後かを返します。
1.0.9Mongo::__construct"replicaSet" オプションが追加されました。
 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.7MongoCollection::countlimit および skip が それぞれ二番目、三番目のパラメータとして追加されました。
1.0.5MongoCollection::batchInsertoptions パラメータが追加されました。
 MongoCollection::ensureIndex"name" オプションで、インデックス名の作成を上書きできるようになりました。
 MongoCollection::remove二番目のパラメータがオプションの配列に変わりました。1.0.5 より前のバージョンでは、二番目のパラメータは "safe" オプションを表す boolean 値でした。
 MongoCollection::saveoptions パラメータが追加されました。
 MongoCollection::update"safe" オプションが追加されました。
1.0.2Mongo::__constructコンストラクタがオプションの配列を受け取るようになりました。 以前のバージョンでは、コンストラクタは以下のパラメータを受け取っていました。 server サーバー名。 connect オプションの boolean パラメータで、 コンストラクタがデータベースに接続するかどうかを示します。 デフォルトは TRUE です。 persistent 持続的な接続を行うかどうか。 paired ペア接続を行うかどうか。
 MongoCollection::ensureIndexoptions パラメータが boolean から配列に変わりました。 1.0.2 より前のバージョンでは二番目のパラメータはオプションの boolean 値で、一意なインデックスを指定するものでした。
 MongoCollection::insert二番目のパラメータがオプションの配列に変わりました。1.0.2 より前のバージョンでは、二番目のパラメータは "safe" オプションを表す boolean 値でした。
1.0.1MongoCollection::insert"safe" オプションが設定されていて追加に失敗した場合に MongoCursorException をスローするようになりました。
 MongoCollection::updateoptions パラメータが boolean から配列に変わりました。 1.0.1 より前のバージョンでは二番目のパラメータはオプションの boolean 値で、upsert を指定するものでした。

Mongo
PHP Manual