Как запросить MongoDB с "LIKE" и "NOT LIKE"? - PullRequest
1 голос
/ 17 июля 2011

У меня есть такой массив

array(
  'ts' : 123456789,
  'nm' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
)
...
array(
  'ts' : 122345678,
  'nm' : 'Nulla lorem purus, pretium porttitor ultricies sit amet, rutrum sollicitudin risus.'
)

Как найти элементы, которые содержат amet 'И не содержат' ipsum 'в' нм '?И как найти элементы, которые относятся к ' amet ' и ' ipsum '?

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

МОЕ РЕШЕНИЕ

array(
  'nm' => array(
    '$all' => array(new MongoRegex('/amet/'), ...),
    '$nin' => array(new MongoRegex('/ipsum/'), ...)
  )
)
2 голосов
/ 17 июля 2011

Самое близкое, что есть у Монго к LIKE, это регулярные выражения:

db.my_collection.find({nm: /amet/})

но я не думаю, что вы можете делать то, о чем просите, если только вы не можете написать одно регулярное выражение, содержащее как часть запроса, так и не содержащую его.

Тем не менее, как и в случае LIKE, запросы регулярных выражений Mongo не производительны. Если вам нужен полнотекстовый поиск, вам следует поискать что-то вроде Solr или базу данных, в которую встроены полнотекстовые индексы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...