Mongodb поиск по словам

Станислав
На сайте с 27.12.2009
Offline
254
1352

Подскажите если что что то подобное в mongodb для поиска по словам. В mysql использовал RLIKE слово|слово|слово

Как можно реализовать в mongodb такой поиск или быть может есть альтернатива?

Мы там, где рады нас видеть.
bbon
На сайте с 01.04.2006
Offline
127
#1
Ms-Dred:
Подскажите если что что то подобное в mongodb для поиска по словам. В mysql использовал RLIKE слово|слово|слово
Как можно реализовать в mongodb такой поиск или быть может есть альтернатива?

странный вопрос.. ну, например там полноценные регэкспы есть http://docs.mongodb.org/manual/reference/operator/query/regex/ - а что, бывает, что в базе данных не бывает поиска по словам? 😕

Станислав
На сайте с 27.12.2009
Offline
254
#2
bbon:
странный вопрос.. ну, например там полноценные регэкспы есть http://docs.mongodb.org/manual/reference/operator/query/regex/ - а что, бывает, что в базе данных не бывает поиска по словам? 😕

Ну я просто еще ток разбираюсь со всем этим. Доку по regex читал, но с моими знаниями, составление правильной регулярки займет много времени, вот и интересуюсь, к тому же думаю что regex в данном случае не поможет:

Суть такая, есть коллекция в которой поле массив

tags: ["slovo1","slovo2","slovo3","slovo4"]

Думаю как сделать чтобы при поиске "slovo1 slovo4" найти все записи в которых присутствует и то и другое слово.

bbon
На сайте с 01.04.2006
Offline
127
#3
Ms-Dred:
Ну я просто еще ток разбираюсь со всем этим. Доку по regex читал, но с моими знаниями, составление правильной регулярки займет много времени, вот и интересуюсь, к тому же думаю что regex в данном случае не поможет:

Суть такая, есть коллекция в которой поле массив
tags: ["slovo1","slovo2","slovo3","slovo4"]

Думаю как сделать чтобы при поиске "slovo1 slovo4" найти все записи в которых присутствует и то и другое слово.

db.collection.find({ $and: [{ field: /slovo1/i },{ field: /slovo4/i }] });
- как-то так, либо:

db.collection.find({ field: /slovo1.*slovo4|slovo4.*slovo1/i });
- поэкспериментировать надо, что лучше
SocFishing
На сайте с 26.09.2013
Offline
118
#4

Если нужен полнотекстовый поиск

SELECT * FROM users WHERE name LIKE "%Joe%"
$db->users->find(array("name" => new MongoRegex("/Joe/")));

SELECT * FROM users WHERE name LIKE "Joe%"
$db->users->find(array("name" => new MongoRegex("/^Joe/")));

Для точного поиска по коллекции

SELECT * FROM users WHERE a=1 or b=2
$db->users->find(array('$or' => array(array("a" => 1), array("b" => 2))));

http://www.php.net/manual/en/mongo.sqltomongo.php

http://docs.mongodb.org/manual/reference/sql-comparison/

Оформите в класс нужные вам функции и все получится.

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий