これは、 hasNext()
での反復に関して1.6.0で導入されたバグに関連している可能性があります。 およびgetNext()
: PHP-1382
。その後、修正が v1.6<にマージされました。 / code> ブランチ
今週後半に1.6.1としてリリースされる予定です。
そうは言っても、 hasNext()
に関するバグ 実際には、結果セットの最後のドキュメントが反復中に失われるということでした。 1.6.0に対して元のスクリプトを実行すると、配列に null
が含まれます 最後の要素としての値。修正が行われると、アレイには期待どおりにすべてのドキュメントが含まれます。どちらのバージョンでも発生している例外を再現することはできません。
この例外は、カーソルオブジェクトがMongoClientとソケット接続に適切に関連付けられていることを確認するために、Cデータ構造の内部チェックから実際にスローされます。 MONGO_CHECK_INITIALIZED()
を参照してください hasNext()
は、ソケットオブジェクトもチェックするという点で独特です(他のメソッドは、MongoClientのカーソルにもソケットがあると想定していると思います)。その例外が本当に再現可能であり、拡張機能を使用してデバッグを実行する意思がある場合は、2つのチェックのどちらがエラーをスローしているのかを知りたいと思います。
補足として、 "replicaSet"
も指定する必要があります MongoClientを構築するときのオプション。これにはレプリカセット名を付ける必要があります。これにより、ドライバーは、目的のレプリカセットのメンバーではないホストへの接続を適切に無視できます。