Class MongoItemReader<T>

All Implemented Interfaces:
ItemReader<T>, ItemStream, ItemStreamReader<T>, org.springframework.beans.factory.InitializingBean

public class MongoItemReader<T> extends AbstractPaginatedDataItemReader<T> implements org.springframework.beans.factory.InitializingBean

Restartable ItemReader that reads documents from MongoDB via a paging technique.

If you set JSON String query setQuery(String) then it executes the JSON to retrieve the requested documents.

If you set Query object setQuery(Query) then it executes the Query to retrieve the requested documents.

The query is executed using paged requests specified in the AbstractPaginatedDataItemReader.setPageSize(int). Additional pages are requested as needed to provide data when the AbstractItemCountingItemStreamItemReader.read() method is called.

The JSON String query provided supports parameter substitution via ?<index> placeholders where the <index> indicates the index of the parameterValue to substitute.

The implementation is thread-safe between calls to AbstractItemCountingItemStreamItemReader.open(ExecutionContext), but remember to use saveState=false if used in a multi-threaded client (no restart available).

Author:
Michael Minella, Takaaki Iida, Mahmoud Ben Hassine, Parikshit Dutta
  • Constructor Details

    • MongoItemReader

      public MongoItemReader()
  • Method Details

    • setQuery

      public void setQuery(org.springframework.data.mongodb.core.query.Query query)
      A Mongo Query to be used.
      Parameters:
      query - Mongo Query to be used.
    • setTemplate

      public void setTemplate(org.springframework.data.mongodb.core.MongoOperations template)
      Used to perform operations against the MongoDB instance. Also handles the mapping of documents to objects.
      Parameters:
      template - the MongoOperations instance to use
      See Also:
      • MongoOperations
    • setQuery

      public void setQuery(String queryString)
      A JSON formatted MongoDB query. Parameterization of the provided query is allowed via ?<index> placeholders where the <index> indicates the index of the parameterValue to substitute.
      Parameters:
      queryString - JSON formatted Mongo query
    • setTargetType

      public void setTargetType(Class<? extends T> type)
      The type of object to be returned for each AbstractItemCountingItemStreamItemReader.read() call.
      Parameters:
      type - the type of object to return
    • setParameterValues

      public void setParameterValues(List<Object> parameterValues)
      List of values to be substituted in for each of the parameters in the query.
      Parameters:
      parameterValues - values
    • setFields

      public void setFields(String fields)
      JSON defining the fields to be returned from the matching documents by MongoDB.
      Parameters:
      fields - JSON string that identifies the fields to sort by.
    • setSort

      public void setSort(Map<String,org.springframework.data.domain.Sort.Direction> sorts)
      Map of property names/Sort.Direction values to sort the input by.
      Parameters:
      sorts - map of properties and direction to sort each.
    • setCollection

      public void setCollection(String collection)
      Parameters:
      collection - Mongo collection to be queried.
    • setHint

      public void setHint(String hint)
      JSON String telling MongoDB what index to use.
      Parameters:
      hint - string indicating what index to use.
    • doPageRead

      protected Iterator<T> doPageRead()
      Description copied from class: AbstractPaginatedDataItemReader
      Method this ItemStreamReader delegates to for the actual work of reading a page. Each time this method is called, the resulting Iterator should contain the items read within the next page.

      If the Iterator is empty or null when it is returned, this ItemReader will assume that the input has been exhausted.
      Specified by:
      doPageRead in class AbstractPaginatedDataItemReader<T>
      Returns:
      an Iterator containing the items within a page.
    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Checks mandatory properties
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception
      See Also:
      • InitializingBean.afterPropertiesSet()