When using MongoPaginationPartitioner (by size or count), the request used to calculate partitions is using a projection on partition key
val newHead: Option[BsonValue] = connector.withCollectionDo(readConfig, { coll: MongoCollection[BsonDocument] =>
Option(coll.find()
.filter(Filters.gte(partitionKey, preBsonValue))
.skip(skipValue)
.projection(Projections.include(partitionKey))
.sort(Sorts.ascending(partitionKey))
.first()).map(doc => doc.get(partitionKey))
})
If partitionKey is not _id, projection is not excluding explicitly _id, which make the query not covered by the partition key index and thus not optimized.