Buscar no trabajar en Mongo DB PHP -- mongodb campo con mongodb-query campo con mongodb-php campo con php-mongodb camp Relacionados El problema

Search not working in mongo db php


0
vote

problema

Español

Tengo una colección en Mongo DB como

          "_id": ObjectId("5aa662b0d2ccda095400022f"),         "EmployeeNumber": "12345",         "JobTitle": ObjectId("5a7c2008d2ccda04d000606f"),         "Instructor": NumberInt(1),         "Department": ObjectId("5a8173e6d2ccda13240015a4"),         "FirstName": "Aasiya",         "MiddleName": "Rashid",         "LastName": "Khan"   

y estoy tratando de buscar en un parámetro usando las siguientes líneas de código

         $param = preg_replace('!s+!', ' ', $this->searchCriteria);   $arg = trim($param);     var_dump($arg);      $cursor= $this->collection->aggregate(         array(             array(                       '$project' => array(                       'FullName' => array('$concat' => array('$FirstName',  ' ',  '$MiddleName', ' ', '$LastName')),                       'FirstMiddle' => array('$concat' => array('$FirstName',  ' ',  '$MiddleName')),                       'FirstLast' => array('$concat' => array('$FirstName',  ' ',  '$LastName')),                       'Employee' => '$$ROOT'                   )                 ),              array(                '$match' =>                      array('$or' =>                         array(                         array("Employee.FullName" => new MongoRegex("/$arg/i")),                         array("Employee.FirstLast" => new MongoRegex("/$arg/i")),                         array("Employee.FirstMiddle" => new MongoRegex("/$arg/i")),                         array("Employee.EmployeeNumber" => new MongoRegex("/^$arg/i"))                           )                         )                       ),                     )                  );       return $cursor->toArray();   

Está devolviendo la matriz vacía como "Array (0) {}". He intentado algo como esto en versión anterior de Mongo DB, la consulta anterior estaba funcionando bien. Ahora soy Mongo DB 3.6, no está funcionando en esta versión. Si le doy "AA" en los comprimidos de los parámetros, no funciona.

¡Por favor ayuda !!!

Original en ingles

I have a collection in mongo db like

        "_id": ObjectId("5aa662b0d2ccda095400022f"),         "EmployeeNumber": "12345",         "JobTitle": ObjectId("5a7c2008d2ccda04d000606f"),         "Instructor": NumberInt(1),         "Department": ObjectId("5a8173e6d2ccda13240015a4"),         "FirstName": "Aasiya",         "MiddleName": "Rashid",         "LastName": "Khan" 

And I am trying to search on one parameter by using below lines of code

       $param = preg_replace('!\s+!', ' ', $this->searchCriteria);   $arg = trim($param);     var_dump($arg);      $cursor= $this->collection->aggregate(         array(             array(                       '$project' => array(                       'FullName' => array('$concat' => array('$FirstName',  ' ',  '$MiddleName', ' ', '$LastName')),                       'FirstMiddle' => array('$concat' => array('$FirstName',  ' ',  '$MiddleName')),                       'FirstLast' => array('$concat' => array('$FirstName',  ' ',  '$LastName')),                       'Employee' => '$$ROOT'                   )                 ),              array(                '$match' =>                      array('$or' =>                         array(                         array("Employee.FullName" => new MongoRegex("/$arg/i")),                         array("Employee.FirstLast" => new MongoRegex("/$arg/i")),                         array("Employee.FirstMiddle" => new MongoRegex("/$arg/i")),                         array("Employee.EmployeeNumber" => new MongoRegex("/^$arg/i"))                           )                         )                       ),                     )                  );       return $cursor->toArray(); 

It is returning empty array like "array(0) { }". I have tried something like this in earlier version of mongo db, the above query was working fine. Now I am mongo db 3.6, it is not working in this version. If I give "aa" in parameter searchCriteria, it does not work.

Please help!!!

           

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

La última etapa debe ser

           array(            '$match' =>                  array('$or' =>                     array(                     array("FullName" => new MongoDBBSONRegex($arg, 'i')),                     array("FirstLast" => new MongoDBBSONRegex($arg, 'i')),                     array("FirstMiddle" => new MongoDBBSONRegex($arg, 'i')),                     array("Employee.EmployeeNumber" => new MongoDBBSONRegex($arg, 'i'))                       )                     )                   ),   
 

The last stage should be

         array(            '$match' =>                  array('$or' =>                     array(                     array("FullName" => new MongoDB\BSON\Regex($arg, 'i')),                     array("FirstLast" => new MongoDB\BSON\Regex($arg, 'i')),                     array("FirstMiddle" => new MongoDB\BSON\Regex($arg, 'i')),                     array("Employee.EmployeeNumber" => new MongoDB\BSON\Regex($arg, 'i'))                       )                     )                   ), 
 
 
     
     

Relacionados problema

0  Fetch Documentos con condición en el campo "Array of Objects" en MongoDB con PHP  ( Fetch documents with condition on array of objects field in mongodb with php ) 
Vi otras preguntas similares para consultar campos de matriz, pero la mayoría de ellos fueron para Mongo puro y no pude traducir las soluciones al controlador...

0  Symfony 4 MongoDB ODM ONE a una relación no está funcionando  ( Symfony 4 mongodb odm one to one relationship is not working ) 
Estoy enfrentando un error con Symfony y MongoDB ODM en una relación Por ejemplo, tengo un usuario que tiene trabajo. Clase de usuario: /** * @MongoDBDo...

9  PHP MongoDB: el uso del comando agregado sin la opción del cursor está en desuso. ¿Qué?  ( Php mongodb use of the aggregate command without the cursor option is deprecat ) 
He actualizado Mongo y ahora en el registro aparece el siguiente error: El uso del comando agregado sin la opción del cursor está desaprobado Mongo dice ...

3  Cómo clasificar el resultado de la búsqueda en MongoDB  ( How to sort result of lookup in mongodb ) 
Quiero unirme a dos colecciones y ordenar el campo FECHA en la tabla EXTRANJERA y luego reducir los campos para obtener solo un registro de la fecha reciente ...

0  Conexión de control de controlador PHP MongoDB  ( Php mongodb driver check connection ) 
Tratando de verificar la conexión con /fr7 Server usando /fr8 Administrador de controladores! Gogueled muchas veces para obtener el método como /fr9 o c...

0  Obtención de documentos integrados sobre criterios de búsqueda de otro documento incrustado  ( Fetching embedded documents on search criteria of another embedded document ) 
Tengo una colección HOSTELTBL, que tiene muchos documentos, uno del documento es como async4 Tengo dos documentos incrustados dentro de un documento. Un...

-1  Json Array a la matriz  ( Json array to array ) 
Tengo una matriz JSON de Larave Me gusta esto: IlluminateSupportCollection Object ( [items:protected] => Array ( [0] => Array ...

0  Pase la consulta de Mongo Shell a la biblioteca Mongo-PHP como cadena  ( Pass mongo shell query to mongo php library as string ) 
A continuación se muestra la consulta que quiero ejecutar usando Mongo-PHP-Biblioteca, Quiero pasar la consulta como cadena al conductor. No quiero convertir ...

0  Concatenar campos y luego filtrar los resultados en PHP / MONGODB  ( Concatenate fields and then filter the results in php mongodb ) 
Tengo tres campos en Mongo DB Collection StudentTBL: primero_name medio_name Last_name Estoy creando un módulo de búsqueda utilizando Mongo DB...

0  PHP con mongodb  ( Php with mongodb ) 
Estoy tratando de crear un sitio web usando Mongodb para almacenar credenciales de usuario (nombres de usuario y contraseñas). Me gustaría usar PHP ya que est...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos