我有一些收藏品
**name lastname status**
Jack Nons "no"
Toni Griffon "no"
Anna Griffon "no"
Alex Maxvel "yes"
Nina Maxvel "yes"
我想收到姓氏,这不是唯一的,状态是"是"。
我的代码在php中写道,我收到了所有不是唯一的姓氏,但没有检查状态。
$cursor = $collection->aggregate(
array(
array(
'$group' => array("_id" => array('lastname' => '$lastname'), 'total' => array('$sum' => 1)
)
),
array(
'$match' => array('total' => array('$gt' => 1)
),
)
)
);
请告诉我如何添加状态检查?
答案 0 :(得分:0)
您可以将多个条件匹配。
'$match' => array('total' => array('$gt' => 1), 'status' => 'yes')
答案 1 :(得分:0)
您可以在聚合管道中有多个$ match阶段,在一个$ match运算符中有多个条件。
首先过滤具有'status' == 'yes'
的文档然后对它们进行分组会更快。然后$ group操作将有更少的文档要处理:
$collection->aggregate(array(
array(
array(
'$match' => array('status' => 'yes'),
),
array(
'$group' => array(
"_id" => array('lastname' =>'$lastname'),
'total' => array('$sum' => 1)
)
)
)
);