在Mongo PHP Library的聚合函数中使用模式$ match $ in

时间:2017-12-02 05:55:17

标签: php mongodb

我在代码中使用Mongo PHP库:https://github.com/mongodb/mongo-php-library/

我正在尝试使用Mongo PHP Library中的聚合函数向MongoDB发送以下查询:

  

块引用

db.customers.aggregate(
{$match: {Country: "India", Email: {$in: [/.*@gmail.com*/,/.*@hotmail.com*/] } } },
{$group : {_id : {Email: "Email"}, "count" : {$sum : 1} } },
{$sort : {"count" : -1} }
)

此查询在MongoDB服务器上正常工作。但是在PHP代码中,它无法正常工作。

  

块引用

$query = array(
['$match' => ['Country' => "India", 
              'Email' => ['$in' => ['/.*@gmail.com*/','/.*@hotmail.com*/']]
             ]
],
['$group' => ['_id' => ['Email' => '$Email']
              'count' => ['$sum' => 1]
             ]
],
['$sort' => ['count' => -1]]
);
$cursor = $this->customers->aggregate($query);

$ in数组不能使用上面的通配符模式。它不会显示任何错误或结果。但它适用于确切的电子邮件。我怎么能在$ match

下的$ in数组中提到模式

请建议我如何在Mongo PHP库中提交通配符模式。

1 个答案:

答案 0 :(得分:1)

试试这个

$query = array(
array('$match' => array('Country' => "India",'Email' => 
    array('$in' => array('/.*@gmail.com*/','/.*@hotmail.com*/'))
)),

array('$group' =>  array('_id' =>  array('Email' => '$Email')
              'count' =>  array('$sum' => 1)
             )
),
 array('$sort' =>  array('count' => -1))
);