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

SpringMongoItemReaderが1回の実行ですべてのレコードを読み取らない

    おそらく、読み取り元のコレクションを更新していて、クエリが使用しているフィールドも更新していると思います。もしそうなら、私は最近同じ問題を抱えていました。

    MongoItemReaderはページリーダーです。したがって、ライターがこれらのレコードを更新するたびに、リーダーのプールは小さくなりますが、ページは増え続けます。

    したがって、20個のアイテムがあり、一度に5個のアイテムを読み取ると想像してください。

    1)合計20からアイテム1〜5を読み取ります。

    2)アイテム1〜5を更新し、合計15の可能なアイテムがあります

    3)合計15からアイテム6〜10を読み取ります。

    4)アイテム6〜10を更新し、合計10個のアイテムが可能になりました。

    5)10個の可能なアイテムのうち11〜15個のアイテムを読み取ります

    6)そのページには何も返されないため、Readはnullを返します。

    これで、半分しか処理できませんでした。

    以下のチュートリアルに従って、この問題を解決するMongoDbCursorItemReaderを作成しました。 https://blog.zenika.com/2012/05/23/spring-batch-and-mongodb-cursor-based-item-reader/




    1. MongoDB-ネストされた配列のフィールド値に基づいて配列オブジェクトのフィールドを更新します

    2. マングースは異なる値で同じフィールドをクエリします

    3. Grailsドキュメントのカスタムイベントリスナーの例

    4. Docker内のMongo認証