次のエラーが表示されます。
スレッド「メイン」com.mongodb.MongoCursorNotFoundException での例外: com.mongodb.operation.QueryHelper.translateCommandException(QueryHelper のサーバー mongodb2:27017 でエラー コード -5 およびエラー メッセージ「カーソル 304054517192 がサーバー mongodb2:27017 に見つかりません」でクエリが失敗しました。 .java:27) で com.mongodb.operation.QueryBatchCursor.getMore(QueryBatchCursor.java:215) で com.mongodb.operation.QueryBatchCursor.hasNext(QueryBatchCursor.java:103) で com.mongodb.MongoBatchCursorAdapter.hasNext(MongoBatchCursorAdapter. java:46) で com.mongodb.DBCursor.hasNext(DBCursor.java:155) で org.jongo.MongoCursor.hasNext(MongoCursor.java:38) で com.abc.Generator.Generate(Generator.java:162) でcom.abc.main.main(main.java:72)
これは、クエリの実行時間が長すぎたためだと思います。
そのため、mongo を使用してクエリを実行しfind()
、コレクションの半分を反復処理する予定です。
次に、別のfind()
クエリを使用して、コレクションの残りの半分を反復処理します。
コレクションの半分の位置にカーソルを直接配置する方法を教えてください。ドキュメントは、そのための機能を提供していないようです。
私は基本的に を使用してfind()
、 を介してサーバーに接続しながら、100000 レコードのコレクションを反復処理していますssh
。
MongoCollection history = jongo.getCollection("historyCollection");
MongoCursor<MyClass> allHistories = history.find().as(MyClass.class);
//---Iterate thru all histories
while (allHistories.hasNext()) {
MyClass oneHistory = allHistories.next();
}