使用php在mongodb中使用distinct进行限制、计数和排序

使用php在mongodb中使用distinct进行限制、计数和排序,php,mongodb,nosql,Php,Mongodb,Nosql,如何在mongo中使用limit、count和sort与PHP中的distinct?我正在使用mongo命令功能,代码如下: $data_count= $mongoInstance>command(array("distinct"=>"collection","key"=>"key","query"=>$filter_query)); 如何将计数、排序和限制与此关联 mongo中有一些聚合框架,但是如何在PHP中使用它呢?我相信您实际上在寻找聚合框架。distinct命

如何在mongo中使用limit、count和sort与PHP中的distinct?我正在使用mongo命令功能,代码如下:

$data_count= $mongoInstance>command(array("distinct"=>"collection","key"=>"key","query"=>$filter_query));
如何将计数、排序和限制与此关联


mongo中有一些聚合框架,但是如何在PHP中使用它呢?

我相信您实际上在寻找聚合框架。
distinct
命令的功能非常有限。您正在寻找的示例如下:

$db->col->aggregate(array(
    array('$match'=>$filter_query)
    array('$group'=>array('_id'=>'$key', 'count'=>array('$sum'=>1))),
    array('$sort'=>array('_id'=>-1)),
    array('$skip'=>4),
    array('$limit'=>20)
));

可在此处找到更多参考资料:

访问此链接@jetawe已选中。只有一个例子使用limit,它是用于文本搜索的。也没有给出设置偏移量的示例。谢谢@Sammaye。它正在工作。还有一点帮助。我只需要知道总计数,以便分页。我的意思是,这将只选择20个值,我想知道有多少唯一的结果。还需要包括一些更多的字段来选择。我想我可以把它包括在$project中。我需要包括要选择的电子邮件、时间戳和事件字段。@AlwinAugustin我认为在SQL中,您可能需要进行两次查询才能获得总计数,如果您需要更多字段,只需将它们包括在$group运算符中,如
'email'=>'$email'
谢谢。我已经计算了计数。现在,当我给出数组(“$group”=>array(“'U id'=>“$email','email'=>“$email','timestamp'=>“$timestamp','event'=>“$event'))时,它正在重新运行一个错误,该错误表示[errmsg]=>异常:组聚合字段“email”必须定义为object@AlwinAugustin哦,很抱歉,这是分组,请尝试:
“电子邮件”=>数组(“$max'=>”$email')
,如果处理重复项,必须告诉MongoDB您想要什么值