如何在mogodb php查询中进行排序和选择distinct
我有一个带有聚合框架的mongo php查询,现在我想为该查询添加排序和选择不同的条件,请不要告诉我,如果没有这两个标准,我的查询工作得很好 看一看如何在mogodb php查询中进行排序和选择distinct,php,mongodb,sorting,distinct,Php,Mongodb,Sorting,Distinct,我有一个带有聚合框架的mongo php查询,现在我想为该查询添加排序和选择不同的条件,请不要告诉我,如果没有这两个标准,我的查询工作得很好 看一看 $result = $collection->aggregate(array( array( '$match' => array( 'Details.Model' =>"AUDI", 'Details.Color' => "RED", "Category" =>"Car" ) ), arr
$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"
),
)
));
我想要的是对详细信息进行排序。Price
按降序排序,还可以将分类
和详细信息进行排序。OwnerNameFirst
作为选择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"}]
似乎大部分是这样,但问题是,如果我们是“分组”(这意味着不同),那么这意味着“价格”有不止一个值 那你想要哪一个?还是 我将使用作为示例,但根据您的需要进行更换:
$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,
)
)
));
因此,一旦通过不同的键得到一个值,就只需添加一个阶段。但选择您真正想要的文件。检查文档:
PHP等价物:
array(
'$sort' => array("$Details.Price" => -1),
)
查看查看更多信息。显示
$result的输出
我得到了结果,但在自动完成视图中没有显示任何内容,我使用此查询形成了一个自动完成的文本框,在此查询之后,我还将结果json编码为json_encode($result['result'])代码>另外,我在控制台中获得了唯一的值,作为mozilla firebug中的响应
array(
'$sort' => array("$Details.Price" => -1),
)