2011-08-17 8 views
5

me gustaría implementarSQL a MongoDB?

"SELECT * FROM TABLE_NAME 
    WHERE 
     name like '$query_string' or 
     title like '%$query_string%' or 
     tags like '%$query_string%'" 

a MongoDB, y yo probamos

$condition = array('$or' => 
    array('writer'=> array('name'=>"$query_string"), 
      'title'=> new MongoRegex("/$query_string/"), 
      'tags' => new MongoRegex("/$query_string/"))); 

y esto no funciona.

¿Cuál es la forma correcta de implementar ese SQL en mongoDB?

Respuesta

3

es como construyo un caso-insensibles Aquí, "contiene" plazo

$containsTerm = new MongoRegex(sprintf('/%s/i', preg_quote($term, '/'))); 

Así que su condición podría parecerse a

$condition = array('$or' => array(
    'writer.name' => $term, 
    'title'  => $containsTerm, 
    'tags'  => $containsTerm 
)); 

Disculpe si la matriz de condición es incorrecta, utilizo típicamente la Doctrine ODM

+0

No sabía que podía consultar como 'writer.name' en lugar de 'writer' => array ('name' => "$ query_string"). ¡Muy impresionante! – InspiredJW

+0

@JeongWooChang Consulte la sección titulada "Matrices" en la parte inferior - http://php.net/manual/en/mongo.queries.php – Phil

+0

Muchas gracias :) – InspiredJW