64 ビット インストールで C++ API を介して mongoDB を使用すると、次のエラーが発生します。
getMore: カーソルがサーバーに存在しませんでした。再起動またはタイムアウトの可能性がありますか?
エラーが見つかったコード スニペットは次のとおりです。
std::auto_ptr<mongo::DBClientCursor> cursor =
connection.query("database.collection", mongo::BSONObj());
while (cursor->more()) {
// Do stuff
// Update contents of fields
connection.update(...);
}
コードが単純に行うことは、特定のデータ構造に基づいて各ドキュメントのフィールドの内容を更新することです。
コードは小さなデータ セットでテストされており、完全に正常に動作するため、これはコーディング エラーではなく、最終的なデータ セットのサイズに関連するデータベース側のエラーであると考えられます。
私のエラーは、このバグ レポートに似ています。そこで提案されている解決策は、カーソルにタイムアウトがないように設定することですが、C++ APIにはそのような機能はありませんが、他の言語には存在するようです。
どんな提案でも大歓迎です。