Es mejor usar .aggregate()
para hacer esto. También es un método directo sobre los objetos de colección en las versiones modernas del controlador:
$result = $db->collection('Profit_and_loss')->aggregate(array(
array( '$group' => array(
'_id' => '$entity_id',
'year' => array( '$max' => '$year' )
))
));
El .distinct()
El comando solo se ejecuta en un solo campo. Otros formularios requieren una evaluación de JavaScript como ha señalado y se ejecutan considerablemente más lento que el código nativo.