Как искать строку в искомой подстроке в mongodb и mysql? - PullRequest
0 голосов
/ 05 декабря 2018

Данные "пользовательской" коллекции / таблицы в моей базе данных выглядят так: -

{
 _id: 1,
 name: "Vikas",
 subject: "Computers"
},
{
 _id: 2,
 name: "Hello",
 subject: "Computers"
},
{
 _id: 3,
 name: "Abc",
 subject: "Mechanical"
}

Следующие запросы дадут результат механических данных: -

Mongodb: -

db.test.find({subject: /mech/i}) ->

Mysql: -

select * from test where subject like "%mech%"

Но я хочу поиск, например, если я буду искать «mechanicalData», то это не даст результат механическогоданные.

Я надеюсь, что смогу прояснить свой вопрос.Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

(относится к MySQL.)

Нет механизма поиска, который бы понимал языки настолько, чтобы понимать, что «механические данные» и «механические данные» - это одно и то же.

Вы можете наэто делается на индивидуальной основе, но не в общем случае.

REGEXP "mechanical ?data"

? означает «необязательный пробел».

LIKE "%mechanical%data"

также найдет и «mechanicalData», и «механические данные ".Тем не менее, он также найдет «механические данные foobar»

0 голосов
/ 05 декабря 2018
For MongoDB    
db.test.find({subject: /^mech$/i}) //Search exact word
db.test.find({subject: /mech$/i}) //Search word which ending with "mech"
db.test.find({subject: /^mech/i}) //Search word which start with "mech"
db.test.find({subject: /mech/i}) //Search word at any position


For Mysql
select * from test where subject like "mech" //Search exact word
select * from test where subject like "%mech" //Search word which ending with "metch"
select * from test where subject like "mech%" //Search word which start with "metch"
select * from test where subject like "%mech%" //Search word at any position
...