在mongoDB中将第二个参数添加到$ match

I have some collection

**name    lastname    status**

Jack     Nons       "no"
Toni     Griffon    "no"
Anna     Griffon    "no"
Alex     Maxvel     "yes"
Nina     Maxvel     "yes"

I want to recieve the lastnames, which is not unique and where status is "yes".

My code wrote in php and I recieved all not unique lastnames but don't check status.

 $cursor = $collection->aggregate(
            array(

                array(
                    '$group' => array("_id" => array('lastname' => '$lastname'), 'total' => array('$sum' => 1)
                     )
                ),

                array(
                    '$match' => array('total' => array('$gt' => 1)
                     ),

                )

            )
        );

Please tell me how to add checking of status?

You can have multiple $match stages in the aggregation pipeline and multiple conditions in one $match operator.

It would be would faster to first filter documents that have 'status' == 'yes' and then to group them. The $group operation will then have less documents to process:

$collection->aggregate(array(
    array(
        array(
            '$match' => array('status' => 'yes'),
        ),
        array( 
            '$group' => array(
                "_id" => array('lastname' =>'$lastname'), 
                'total' => array('$sum' => 1)
            )
        )
    )
);

You can put more than one condition into match.

'$match' => array('total' => array('$gt' => 1), 'status' => 'yes')