public static function first(
        $query = [],
        array $projection = [],
        bool $useCache = false
    ) {
        return self::getDataMapperInstance()->first(
            $query,
            $projection,
            $useCache
        );
    }
public static function first(
        $query = [],
        array $projection = [],
        bool $useCache = false
    ) {
        return self::getDataMapperInstance()->first(
            $query,
            $projection,
            $useCache
        );
    }
public static function first ( $ query = [ ] , array $ projection = [ ] , bool $ useCache = false ) { return self :: getDataMapperInstance ( ) -> first ( $ query , $ projection , $ useCache ) ; }
Gets the first entity of this kind that matches the query.

@param mixed $query      mongoDB selection criteria
@param array $projection fields to project in Mongo query
@param bool  $useCache   retrieves the entity through a CacheableCursor

@return ActiveRecord
Gets the first entity of this kind that matches the query .