Sie möchten den Maximalwert des Felds speed
und die entsprechenden anderen Felder für diesen Datensatz ermitteln.Symfony2 Mongodb-Aggregat - Maximalwert für ein Feld erhalten
Lassen Sie sich diese MongoDB Abfrage:
db.Neo.aggregate({
$group: {
_id: '$name',
date: { $first: '$date' },
neo_reference_id: { $first: '$neo_reference_id' },
name: { $first: '$name' },
speed: {
$max: "$speed"
},
is_potentially_hazardous_asteroid: { $first: '$is_potentially_hazardous_asteroid' }
}
});
Jetzt, da ich Symfony2 und Mongo-odm-Aggregation-Bündel verwende, möchte diese Abfrage ausgeführt werden:
public function neofastestAction() {
$expr = new \Solution\MongoAggregation\Pipeline\Operators\Expr;
$aq = $this->get('doctrine_mongodb.odm.default_aggregation_query')->getCollection('NeoNasaBundle:Neo')->createAggregateQuery();
$result = $aq->group(['_id'=>'$name' ])
->getQuery()->aggregate()->toArray();
$serializer = $this->get('jms_serializer');
$response = $serializer->serialize($result,'json');
return new Response($response);
}
Dies führt ihn aus, aber druckt nur die _id
. Wie baue ich meine MondoDB-Abfrage von oben in Symfony2 mongo-odm-aggregation-bundle (https://packagist.org/packages/solution/mongo-odm-aggregation-bundle) und bekomme die letzte Zeile? Es sollte der höchste Wert von speed
sein, also der schnellste Asteroid.
Danke.