sql >> Database >  >> NoSQL >> MongoDB

Hoe MongoDB-aggregatiequery naar Laravel MongoDB te converteren door jenssegers

U kunt beide beter de methoden van het aggregatieraamwerk gebruiken en ook in het onbewerkte MongoDB-verzamelingsobject duiken dat door de onderliggende driver wordt geleverd om dit te doen. Het is een veel betere optie om de syntaxis te vertalen:

// Returns the original Mongo Result
$result = DB::collection('changes')->raw(function($collection)
{
    return $collection->aggregate(array(
        array(
            '$group' => array(
                '_id' => '$field',
                'count' => array(
                    '$sum' => 1
                )
            )
        )   
    ));
});

Het resultaat is een beetje anders dan het resultaat van een methode als .group() maar dit gebruikt native code op de MongoDB-server en is niet afhankelijk van JavaScript-interpretatie zoals de .group() methode doet dat ook, omdat het echt een wrapper is rond mapReduce.

Het eindresultaat is veel sneller, en over het algemeen ook efficiënter dan u uit de native framework-interface kunt halen.

Gebruik dus de native MongoDB-manier voor de beste prestaties.



  1. MongoDB-verbinding instellen met Airflow

  2. Kan MongoDB /data/db-map niet maken op macOS Catalina

  3. Hoe verander ik het IP-adres van Eve?

  4. Documenten verwijderen uit een MongoDB-verzameling op basis van de tijd van een datumveld