2013-10-24 3 views
2

Я создал следующий сбор и полнотекстовый индекс:индексирование и поиск поле номер в MongoDB

db.test1.insert({"name":"kumar goyal","email":'[email protected]',"phoneNo":9742140651}); 
db.test1.ensureIndex({ "$**": "text" },{ name: "TextIndex" }) 

Частичный поиск работает на имя и адрес электронной поля, например,

db.test1.runCommand("text",{search:'rakesh'}); 

возвращает запись должным образом, но он не работает на phoneNo поле.

db.test1.runCommand("text",{search:'9742'}); 

не работает.

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

ответ

0

Вы вставляете номер телефона в виде номера, но затем ищите его как строку.

Возможно, вам стоит рассмотреть вопрос о вводе номера телефона в виде строки. Вы не планируете выполнять какие-либо арифметические действия в этом поле?

Таким образом, mongo сможет выполнять текстовые поиски (например, тот, который вы дали в качестве примера) на «числах», но будет рассматривать их как строки.

+0

Не работает, даже если я вставляю данные, подобные этому db.test1.insert ({"name": "kumar goyal", "email": '[email protected]', "phoneNo": "9742140651 «}); –

0

Mongo DB полный текст не поддерживает частичный поиск. Следовательно, он не работал, не имеет ничего общего с цифрами.

+0

Почему вы пытаетесь выполнять текстовый поиск по телефонным номерам, на самом деле это немного странно. Обычно вы хотите разделить номер телефона на код области и фактический номер, проинтегрировать их, а затем искать с помощью токенов с помощью $ gt и $ lt – Sammaye

Смежные вопросы