【发布时间】:2013-03-19 18:34:58
【问题描述】:
我正在使用聚合和管道查询我的数据库,其中有两个单独的查询:
$groups_q = array(
'$group' => array(
'_id' => '$group_name',
'total_sum' => array('$sum' => 1)
)
);
$statuses_q = array(
'$group' => array(
'_id' => '$user_status',
'total_sum' => array('$sum' => 1)
)
);
$data['statuses'] = $this->mongo_db->aggregate('users',$statuses_q);
$data['groups'] = $this->mongo_db->aggregate('users',$groups_q);
我得到了我想要的:
Array
(
[statuses] => Array
(
[result] => Array
(
[0] => Array
(
[_id] => Inactive
[total_sum] => 2
)
[1] => Array
(
[_id] => Active
[total_sum] => 5
)
)
[ok] => 1
)
[groups] => Array
(
[result] => Array
(
[0] => Array
(
[_id] => Accounting
[total_sum] => 1
)
[1] => Array
(
[_id] => Administrator
[total_sum] => 2
)
[2] => Array
(
[_id] => Rep
[total_sum] => 1
)
)
[ok] => 1
)
)
我不想查询我的数据库两次。有更好的方法吗? 如何通过一个查询完成它?我应该使用 $project 运算符吗?
【问题讨论】:
-
您在这里查询两个不同的集合吗?你能解释一下你想要做什么吗?
-
我正在查询同一个集合,并按两个不同的字段(状态和 group_name)对其进行分组。我试图获得与我提供的相同的结果,即按组组合和按状态分别组合,但在一个查询中。
-
我认为这需要两个查询
标签: php codeigniter mongodb mongodb-php mongodb-query