code: @Nullable
      public DBObject findOne(@Nullable final DBObject query, @Nullable final DBObject projection, @Nullable final DBObject sort,
                              final ReadPreference readPreference) {
          return findOne(query != null ? query : new BasicDBObject(),
                  new DBCollectionFindOptions().projection(projection).sort(sort).readPreference(readPreference));
      }
docs: Get a single document from collection.
  
  @param query          the selection criteria using query operators.
  @param projection     specifies which projection MongoDB will return from the documents in the result set.
  @param sort           A document whose fields specify the attributes on which to sort the result set.
  @param readPreference {@code ReadPreference} to be used for this operation
  @return A document that satisfies the query specified as the argument to this method.
  @mongodb.driver.manual tutorial/query-documents/ Querying