如何在mongodb cakephp中使用“LIKE”语句

时间:2013-06-16 14:52:07

标签: mongodb cakephp

我正在使用ICHIKAWAY的mongodb驱动程序for cakephp。

我真正得到的一件事是如何使用MONGODB在cakephp中执行“LIKE”语句。

我试过这句话:

$users = $this->User->find('all', array('conditions' => array('data_type' => 'user', 'profile.firstname LIKE' => '%'.$string)));

但它不起作用,因为“LIKE”是一个mysql函数。

感谢您的建议。

1 个答案:

答案 0 :(得分:3)

使用MongoRegex

Mongo DB有一个LIKE运算符 - 它只是一个正则表达式,使用它:

$users = $this->User->find('all', array(
    'conditions' => array(
        'data_type' => 'user', 
        'profile.firstname' => new MongoRegex("/$string/i")
     )
));

存在SQL兼容行为

Mongodb驱动程序包含提供sql syntax compatibility的行为。要使用它,只需确保您的模型使用此行为:

class User extends AppModel {

    $actsAs = array(
        'MongoDB.SqlCompatible'
    )
}

然后,您可以完全按照问题中显示的方式使用您的查询:

$users = $this->User->find('all', array(
    'conditions' => array(
        'data_type' => 'user', 
        'profile.firstname LIKE' => '%'.$string
     )
));