Du är bättre på att använda .aggregate()
att göra detta. Det är också en direkt metod på samlingsobjekten i moderna versioner av drivrutinen:
$result = $db->collection('Profit_and_loss')->aggregate(array(
array( '$group' => array(
'_id' => '$entity_id',
'year' => array( '$max' => '$year' )
))
));
.distinct()
kommandot körs bara över ett enda fält. Andra former kräver JavaScript-utvärdering som du har noterat och körs betydligt långsammare än ursprunglig kod.