2014-12-19 3 views
1

У меня есть документы Mongobd. Все документы содержат строку полного имени (например, «john fidgerald kennedy», «john doe»).Mongodb. Как найти строку со всеми подстроками?

По запросу веб-поиска, содержащему подстроки (например, «john», «kennedy» или «kennedy», «john»), я хотел бы найти все документы, в которых полная строка содержит все эти подстроки (например, «john fidgerald kennedy»)).

Однако я не могу понять, как это сделать.

В принципе, с PHP, я хотел бы сделать что-то вроде $ галерею-> найти (массив («FullName» => «джон» & & «Kennedy»). Я знаю, что этот синтаксис не представляется возможным, но это к дают представление о том, что я хотел.

Любая идея, как сделать это? в идеале я хотел бы быстрый метод, учитывая, что у меня есть более 1000000 документов.

Благодаря

+0

http://docs.mongodb.org/manual/reference/operator/query/regex/ – Disposer

+1

Честно говоря, чтение документов может помочь. Вы можете использовать [regexes] (http://php.net/manual/en/class.mongoregex.php) в поле или [создать индекс полнотекстового поиска] (http://docs.mongodb.org/manual/ядро ​​/ индекс-текст /). До этого вам, вероятно, следует прочитать [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask) и ESR [Как задавать вопросы Smart Way] (http: // catb.org/~esr/faqs/smart-questions.html). –

ответ

1

Я надеюсь, что это будет Вам помогут:

$query = "john"; 
$where = array(array('fullname' => array('$regex' => new MongoRegex("/$query/i")))); 
$mongoClient = new MongoClient(); 
$db = $mongoClient->selectDB("datbase_name"); 
$collection = $db->selectCollection("collection_name"); 
$cursor = $collection->find($where); 
Смежные вопросы