Поиск текста на mongodb - PullRequest
       31

Поиск текста на mongodb

0 голосов
/ 12 сентября 2018

У меня есть коллекция пользователей в Mongo DB, имеющая пользователей 55L.Коллекция разделена на 10 узлов.

В коллекции есть поле "электронная почта", в котором хранится адрес электронной почты пользователей.

Я хочу выполнить текстовый поиск по этому вопросу.поле.Я хочу выполнить поиск по «почте», и в результате должны быть перечислены все документы, в которых есть подстрока «mail».

  • Я пробовал с помощью регулярных выражений, но это влияет на производительность из-за размера коллекции.
  • Я пытался создать текстовый индекс для "электронной почты", но он не поддерживает частичный поиск по токенам.

Пример коллекции, упомянутый ниже

{ "_id" : ObjectId("5b90e5ffe34b5891eb4c32f6"), "email" : "anand@gmail.com" }
{ "_id" : ObjectId("5b90e64ee34b5891eb4c32f7"), "email" : "kumar.anand@hotmail.com" }
{ "_id" : ObjectId("5b90e65ae34b5891eb4c32f8"), "email" : "ankit@gmail.com" }
{ "_id" : ObjectId("5b90e661e34b5891eb4c32f9"), "email" : "rahul@rediff.com" }
{ "_id" : ObjectId("5b90e67de34b5891eb4c32fa"), "email" : "prachi@gmail.com" }
{ "_id" : ObjectId("5b90f0ab46ef1951e6afb822"), "email" : "bb@yahoo.com", "name" : "ankit" }
{ "_id" : ObjectId("5b965d4ad5bc80bda9885181"), "email" : "amit@gmail.com", "rating" : [ 5, 6 ] }
{ "_id" : ObjectId("5b965d56d5bc80bda9885182"), "email" : "amit33@gmail.com", "rating" : [ 2, 4 ] }
{ "_id" : ObjectId("5b965d60d5bc80bda9885183"), "email" : "amit11@gmail.com", "rating" : [ 12, 14 ] }
{ "_id" : ObjectId("5b966cf1f12e2344dc5942e5"), "email" : "avin11@gmail.com", "new_rating" : { "id" : [ 5, 6 ] } }
{ "_id" : ObjectId("5b966cfdf12e2344dc5942e6"), "email" : "avin22@gmail.com", "new_rating" : { "id" : [ 2, 4 ] } }
{ "_id" : ObjectId("5b966d06f12e2344dc5942e7"), "email" : "avin33@gmail.com", "new_rating" : { "id" : [ 12, 14 ] } }
{ "_id" : ObjectId("5b986afaf12e2344dc5942e8"), "email" : "Sachin@hotmail.com", "name" : "Sachin" }

Пожалуйста, предложите, как выполнить поискзапрос

1 Ответ

0 голосов
/ 12 сентября 2018

Привет и добро пожаловать в сообщество переполнения стека. Я думаю, что вы все еще можете использовать регулярные выражения, но для повышения производительности у вас должен быть индекс в поле электронной почты.Подробнее о регулярных выражениях и индексах в БД mongo читайте здесь: https://docs.mongodb.com/manual/reference/operator/query/regex/#index-use

Я предлагаю использовать Объяснить результаты , чтобы убедиться, что ваш запрос использует добавленный вами индекс.

Надеюсь, что этопомогает.

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