Как искать части текста с MongoDB? - PullRequest
1 голос
/ 06 декабря 2011

У меня есть некоторые значения в коллекции в документе.Например, мой ключ range может быть:

  • 10 - 29
  • 30 - 39
  • 40 - 49

Это все строки.Я хочу как-то искать (в MongoDB) строки, начинающиеся с 10 и заканчивающиеся 49.Как я могу это сделать?

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

Спасибо

1 Ответ

2 голосов
/ 06 декабря 2011

Вы правы, лучшим вариантом было бы смоделировать их как цифры.Однако, мое лучшее (единственное) альтернативное предложение - использовать поиск по регулярному выражению.См. здесь для документов по регулярному выражению поиска mongo и здесь для создания выражений диапазона.

В зависимости от возможного диапазона ваш запрос будет выглядеть примерно так:

db.collection.find( { range : /[1-4][0-9] - [1-4][0-9]/ } );

, что соответствует указанным параметрам диапазона [10 - 29, 30 - 39, 40 - 49].Обратите внимание, что это также будет соответствовать, например, 49 - 10, поэтому вам нужно усилить это выражение, если есть какие-либо исключения, не упомянутые в вопросе.

Примечание. Запросы регулярных выражений производятся с затратами на производительность, модернизацией и использованием встроенныхв $gt $lt функции, безусловно, были бы желательны.

Удачи!

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