2015-12-22 1 views
3

Mongodb + php: Я очень новичок в mongodb, здесь мое требование состоит в том, что мне нужно искать ключевое слово в двух полях (т.е. first_name, last_name) и возвращать точные совпадающие записи как имя пользователя в одном запросе ,PHP + Mongodb concat function throwing erros

код:

$res = $this->db->nf_users->aggregate({$project:{username:{$concat:["$first_name","$last_name"]}}}, 
        {$match:{username:$search}} 

, сталкивающихся с ошибками.

Parse error: syntax error, unexpected { in

Может кто-нибудь предложить, где он поступил не так.

Спасибо,

ответ

2
db.users.aggregate(
{ 
    $project:{ 
     username:{ $concat:["$first_name",' ',"$last_name"]} 
    } 
}, 
{ 
    $match :{ 
    username: { $regex:"abc",$options:"i"} 
    } 
} 
) 

К этому вы сможете сделать поиск без учета регистра

$users = $this->db->collection('nf_users') 
      ->raw(function ($collection) { 
       return $collection->aggregate(
       array(
        array(
         '$project' => array(
          'username' => array('$concat' => array('$first_name', ' ', '$last_name')), 
         ) 
        ), 
        array(
         '$match' => array(
          'username' => array('$regex' => 'avi', '$options' => 'i'), 
          ) 
         ) 
        ) 
        ); 
       }); 
+0

Thnq Сомнаого для быстрого ответа, но я до сих пор сталкиваюсь с этой ошибкой синтаксического анализа. –

+0

$ this-> db-> nf_users-> агрегат ( \t \t \t \t \t \t \t { \t \t \t \t \t \t \t $ Проект: { \t \t \t \t \t \t \t \t имя пользователя: {$ CONCAT: [ "$ first_name", '', "$ last_name"]} \t \t \t \t \t \t \t} \t \t \t \t \t \t \t}, \t \t \t \t \t \t \t { \t \t \t \t \t \t \t $ спичкой: { \t \t \t \t \t \t \t \t имя пользователя: {$ регулярное выражение: $ поиска, опции $: "я"} \t \t \t \t \t \t \t} \t \t \t \t \t \t \t} \t \t \t \t \t \t \t); –

+0

@SunilKumar: Обновленный ответ. Я не знаю, какую библиотеку mongo вы используете. Я изменил с помощью необработанного запроса. Это работает хорошо. Храните переменную mongo в одинарных кавычках и переменных PHP в двойных кавычках. –