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

时间:2014-06-14 10:05:52

标签: php mongodb

我有一些收藏品

**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)
                     ),

                )

            )
        );

请告诉我如何添加状态检查?

2 个答案:

答案 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)
            )
        )
    )
);