У меня есть mongo php-запрос с агрегатной работой кадра, теперь я хочу добавить сортировку и выбрать различные критерии для этого запроса, пожалуйста, не то, что мой запрос работает отлично без этих двух критериев,
взглянуть
$result = $collection->aggregate(array( array( '$match' => array( 'Details.Model' =>"AUDI", 'Details.Color' => "RED", "Category" =>"Car" ) ), array( '$unwind' => '$Details' ), array( '$match' => array( 'Details.Model' =>"AUDI", 'Details.Color' => "RED", "Category" =>"Car" ) ), array( '$project' => array( 'Pvalue' => '$Details.Price', "Ovalue" =>'$Details.OwnerNameFirst', "Cvalue"=>''$Category" ), ) ));
я хочу, чтобы сортировать Details.Price
в порядке убывания, также Details.OwnerNameFirst
и Details.OwnerNameFirst
as Select Distinct
Пожалуйста помоги
это результат, значение $ result
[{"_id":{"$id":"537dbca305a7d12f06000001"},"Pvalue":"60000","Ovalue":"jason","Cvalue":"Car"},{"_id": {"$id":"537dbca305a7d12f06000001"},"Pvalue":"59000","Ovalue":"george","Cvalue":"Jeep"},{"_id":{"$id":"537dbca305a7d12f06000001"},"Pvalue":"61000","Ovalue":"rahul""Cvalue":"Car"}]
Похоже, в основном там, но вопрос в том, что если мы «группируем» (что означает «отличные»), то это означает, что здесь существует более одного значения «цена».
Итак, чего вы хотите? $min
$max
$first
$last
или $avg
?
Я буду использовать $avg
в качестве примера, но заменим в соответствии с вашими потребностями:
$result = $collection->aggregate(array( array( '$match' => array( 'Details.Model' =>"AUDI", 'Details.Color' => "RED", "Category" =>"Car" ) ), array( '$unwind' => '$Details' ), array( '$match' => array( 'Details.Model' =>"AUDI", 'Details.Color' => "RED", "Category" =>"Car" ) ), array( '$group' => array( '_id' => array( "Ovalue" =>'$Details.OwnerNameFirst', "Cvalue"=>''$Category" ), 'Pvalue' => array( '$avg' => '$Details.Price' ) ) ), array( '$sort' => array( 'Pvalue' => -1, ) ) ));
Поэтому, когда у вас есть значение с помощью отдельных ключей, вы просто добавляете этап $sort
. Но выберите, какой из операторов группы вы действительно хотите.
Проверьте документы для $ sort :
$sort: { Details.Price: -1 }
PHP-эквивалент:
array( '$sort' => array("$Details.Price" => -1), )
Для получения дополнительной информации просмотрите документы PHP .