хорошо, я знаю, это звучит странно, но то, что я хотел бы сделать, это следующее.
$collection = $this->db->products_sale; $user_query = preg_replace("/[[:blank:]]+/"," ", $data); $arr_query = explode(' ', $user_query); if (count($arr_query) > 1) { $tmp = array(); foreach ($arr_query as $q) { $tmp[] = new MongoRegex( "/". $q ."/i" ); } $who['keywords'] = array('$in' => $tmp); $who['title'] = array('$in' => $tmp); $who['description'] = array('$in' => $tmp); } else { $who['keywords'] = new MongoRegex( "/". $user_query ."/" ); $who['title'] = new MongoRegex( "/". $user_query ."/" ); $who['description'] = new MongoRegex( "/". $user_query ."/" ); } print json_encode($who); $cursor = $collection->find( $who );
Как вы можете видеть, я выполняю ряд поисков, то, что я хотел бы сделать, следующее: мне нужно иметь возможность искать ключевые слова, заголовок, описание
Теперь я мог бы выполнить ряд поисков, которые, как я думал, я делаю, но явно нет. из того, что я получил, кажется, что он отправляет одну длинную строку ARRAY или JSON обратно в mongoDB, в отличие от MySQL, где вы можете выполнить поиск OR / AND и даже поиск MATCH, кажется, MongoDB просто не тот умный.
Поэтому мне интересно, может ли кто-нибудь помочь
Это то, что я нашел, работает, но затем он ищет точный способ поиска, например
Windows Phone 7 будет искать вместо ключевых слов.
$cursor = $collection->find( array('$or' => array( array("keywords" => new MongoRegex( "/$user_query/i" )), array("product" => new MongoRegex( "/$user_query/i" )), array("description" => new MongoRegex( "/$user_query/i" )), )));