dsadasd12132 2014-06-14 10:05
浏览 232
已采纳

在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?

  • 写回答

2条回答 默认 最新

  • dongpin1059 2014-06-14 10:20
    关注

    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)
                )
            )
        )
    );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?