sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man konverterar MongoDB-aggregationsfråga till Laravel MongoDB av jenssegers

Du är både bättre av att använda aggregeringsrammetoderna och även dyka in i det råa MongoDB-samlingsobjektet som tillhandahålls från den underliggande drivrutinen för att göra det. Det är ett mycket bättre alternativ än att försöka översätta syntaxen:

// 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
                )
            )
        )   
    ));
});

Resultatet skiljer sig lite från resultatet av en metod som .group() men detta använder inbyggd kod på MongoDB-servern och förlitar sig inte på JavaScript-tolkning som .group() metoden faktiskt gör, är verkligen en omslag runt mapReduce.

Slutresultatet är mycket snabbare och generellt sett mer effektivt än vad du får ut av det inbyggda ramgränssnittet.

Så använd det inbyggda MongoDB-sättet för bästa prestanda.



  1. Fel 99 vid anslutning till localhost:6379. Kan inte tilldela begärd adress

  2. InvalidDocument:Kan inte koda objekt:<Användare:Användarobjekt> ReferenceField med MongoEngine

  3. Vad är HBase-znoder?

  4. Java, MongoDB:Hur uppdaterar man varje objekt samtidigt som man itererar en enorm samling?