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条)

报告相同问题?

悬赏问题

  • ¥15 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染