2011-08-17 4 views
5

J'aime à mettre en œuvreSQL à MongoDB?

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

à MongoDB, et j'ai essayé

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

et cela ne fonctionne pas.

Quelle est la bonne façon d'implémenter SQL à mongoDB?

Répondre

3

Voici comment je construis un insensible à la casse, "contient" terme

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

Ainsi, votre état pourrait ressembler

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

Excuses si le tableau de conditions est erroné, j'utilise généralement le Doctrine ODM

+0

Je ne savais pas que je peux interroger comme 'writer.name' au lieu de 'writer' => array ('name' => "$ query_string"). Assez impressionnant! – InspiredJW

+0

@JeongWooChang Voir la section intitulée "Arrays" près du fond - http://php.net/manual/fr/mongo.queries.php – Phil

+0

Merci beaucoup :) – InspiredJW