2011-08-17 31 views
5

Tôi muốn thực hiệnSQL đến MongoDB?

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

để MongoDB, và tôi đã cố gắng

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

và điều này không hoạt động.

Cách thích hợp để triển khai SQL đó cho mongoDB là gì?

Trả lời

3

Đây là cách tôi xây dựng một case-insensitive "chứa" hạn

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

Vì vậy, tình trạng của bạn có thể trông giống như

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

Xin lỗi nếu mảng điều kiện sai, tôi thường sử dụng phần Doctrine ODM

+0

Tôi không biết tôi có thể truy vấn như 'writer.name' thay vì 'writer' => array ('name' => "$ query_string"). Khá ấn tượng! – InspiredJW

+0

@JeongWooChang Xem phần có tiêu đề "Mảng" gần đáy - http://php.net/manual/en/mongo.queries.php – Phil

+0

Cảm ơn bạn rất nhiều :) – InspiredJW

Các vấn đề liên quan