@Override public ScrollResult<String> scroll(DBSExpressionEvaluator evaluator, int batchSize, int keepAliveSeconds) { cursorService.checkForTimedOutScroll(); MongoDBRepositoryQueryBuilder builder = new MongoDBRepositoryQueryBuilder(this, evaluator.getExpression(), evaluator.getSelectClause(), null, evaluator.pathResolver, evaluator.fulltextSearchDisabled); builder.walk(); if (builder.hasFulltext && isFulltextSearchDisabled()) { throw new QueryParseException("Fulltext search disabled by configuration"); } Bson filter = builder.getQuery(); addPrincipals((Document) filter, evaluator.principals); Bson keys = builder.getProjection(); if (log.isTraceEnabled()) { logQuery(filter, keys, null, 0, 0); } MongoCursor<Document> cursor = coll.find(filter).projection(keys).batchSize(batchSize).iterator(); String scrollId = cursorService.registerCursor(cursor, batchSize, keepAliveSeconds); return scroll(scrollId); }