カーソルへの不正なアクセスや応答を受け取る際のエラーが原因です。
応答を受け取る際にエラーがあった場合は、より詳細なエラーメッセージが得られます。 問題の原因を調べるために役立つでしょう。 エラーメッセージをプログラム上で読み取るのは少し面倒なので、 例外の個々の要因に対してエラーコードも割り当てられています。
cannot modify cursor after beginning iteration
Code: 0
クエリを実行した後で、クエリの設定を変えるメソッドをコールしました。 いったんカーソルをリセットしてからやりなおしてください。
さまざまな送信エラー
Code: 1
クエリをデータベースに送信できませんでした。 データベースが立ち上がっていることとネットワークが正常であることを確認してください。
cursor not found
Code: 2
ドライバがデータベースから結果を取得しようとしましたが、 データベース側にクエリが残っていませんでした。 たいていは、カーソルがサーバ側でタイムアウトしたことを意味します。 やりとりがない状況が数秒続くと、データベースはカーソルを消します (これを防ぐための方法は MongoCursor::immortal() を参照ください)。
さまざまなデータベースエラー
Code: 4
データベースへのクエリで問題が発生しました。 エラーメッセージを見れば何が悪かったかがわかりますが、 データベースのログで詳細を調べることもできます。
couldn't get response header
Code: 3
ドライバがデータベースからのリプライヘッダを取得できず、取得をあきらめました。 データベースが立ち上がっていることとネットワークがつながっていることを確認し、 もう一度クエリを実行してみましょう。
no db response
Code: 5
これはエラーではないかもしれません。たとえば、データベースの "shutdown" コマンドは何も応答を返しません。 しかし、もし何らかの応答を得ることを期待していたのにこのエラーになったのなら、 データベースがその応答を返さなかったことを意味します。
no db response
Code: 5
bad response length: %d, max: %d, did the db assert?
Code: 6
これは、データベースの応答が 4MB を超えるかあるいは 0 未満であることを意味します。 5MB を超えるような値が返ってくるようなら、データベースのバグである可能性があります (応答の最大長は 4MB です)。開発者に報告しましょう。 0 未満の応答は、たいていデータベースのアサーションが発生したことを意味します。
incomplete header/response
Code: 7
めったにありませんが、 データベースの応答が正常にはじまったけれど途中で終わってしまった場合に発生します。 おそらくネットワークの問題でしょう。
error getting database response: errstr
WSA error getting database response: errstr
"errstr" は、C のソケットから直接返ってきた入出力エラーです。 Windows では、エラーメッセージの先頭に "WSA" がつきます。
error getting database response: <various>
Code: 8
ソケット層で何か問題が発生しました。 C のソケットライブラリからのエラーを返します。
couldn't find a response
Code: 9
レスポンスがキャッシュされましたが、その場所を特定できませんでした。
さまざまなメッセージ
Code: 10
データベースからは何もコードが返されませんでした。
E11000 duplicate key error index: foo.bar.$X dup key: { /* ... */ }
Code: 11000
キーの重複を表すデータベースエラー。