sql >> データベース >  >> NoSQL >> MongoDB

Mongo-PHP-MongoDBPHPドライバーv1.6でのMongoCursor例外

    これは、 hasNext()での反復に関して1.6.0で導入されたバグに関連している可能性があります。 およびgetNext() PHP-1382 。その後、修正が v1.6<にマージされました。 / code> ブランチ 今週後半に1.6.1としてリリースされる予定です。

    そうは言っても、 hasNext()に関するバグ 実際には、結果セットの最後のドキュメントが反復中に失われるということでした。 1.6.0に対して元のスクリプトを実行すると、配列に nullが含まれます 最後の要素としての値。修正が行われると、アレイには期待どおりにすべてのドキュメントが含まれます。どちらのバージョンでも発生している例外を再現することはできません。

    この例外は、カーソルオブジェクトがMongoClientとソケット接続に適切に関連付けられていることを確認するために、Cデータ構造の内部チェックから実際にスローされます。 MONGO_CHECK_INITIALIZED()を参照してください このファイル でのマクロ呼び出し 。ほとんどすべてのカーソルメソッドは、MongoClientが関連付けられていることを確認しますが、 hasNext() は、ソケットオブジェクトもチェックするという点で独特です(他のメソッドは、MongoClientのカーソルにもソケットがあると想定していると思います)。その例外が本当に再現可能であり、拡張機能を使用してデバッグを実行する意思がある場合は、2つのチェックのどちらがエラーをスローしているのかを知りたいと思います。

    補足として、 "replicaSet"も指定する必要があります MongoClientを構築するときのオプション。これにはレプリカセット名を付ける必要があります。これにより、ドライバーは、目的のレプリカセットのメンバーではないホストへの接続を適切に無視できます。



    1. アイドル状態のredisクライアントを強制終了するにはどうすればよいですか

    2. node.jsmongojsfindOneコールバックがエラーをnullとして返す

    3. MongoDBスキーマ設計:常にスキーマがあります

    4. コレクションへのconvertToCappedを元に戻す