code: @SuppressWarnings("unchecked")
      public List distinct(final String fieldName, final DBCollectionDistinctOptions options) {
          notNull("fieldName", fieldName);
          return new MongoIterableImpl<BsonValue>(null, executor,
                                                    options.getReadConcern() != null ? options.getReadConcern() : getReadConcern(),
                                                    options.getReadPreference() != null ? options.getReadPreference() : getReadPreference(),
                                                    retryReads) {
              @Override
              public ReadOperation<BatchCursor<BsonValue>> asReadOperation() {
                  return new DistinctOperation<BsonValue>(getNamespace(), fieldName, new BsonValueCodec())
                                 .filter(wrapAllowNull(options.getFilter()))
                                 .collation(options.getCollation())
                                 .retryReads(retryReads);
              }
          }.map(new Function<BsonValue, Object>() {
              @Override
              public Object apply(final BsonValue bsonValue) {
                  if (bsonValue == null) {
                      return null;
                  }
                  BsonDocument document = new BsonDocument("value", bsonValue);
                  DBObject obj = getDefaultDBObjectCodec().decode(new BsonDocumentReader(document), DecoderContext.builder().build());
                  return obj.get("value");
              }
          }).into(new ArrayList<Object>());
      }
docs: Find the distinct values for a specified field across a collection and returns the results in an array.
  
  @param fieldName  Specifies the field for which to return the distinct values
  @param options    the options to apply for this operation
  @return A {@code List} of the distinct values
  @mongodb.driver.manual reference/command/distinct Distinct Command
  @since 3.4