Вы правы, лучшим вариантом было бы смоделировать их как цифры.Однако, мое лучшее (единственное) альтернативное предложение - использовать поиск по регулярному выражению.См. здесь для документов по регулярному выражению поиска mongo и здесь для создания выражений диапазона.
В зависимости от возможного диапазона ваш запрос будет выглядеть примерно так:
db.collection.find( { range : /[1-4][0-9] - [1-4][0-9]/ } );
, что соответствует указанным параметрам диапазона [10 - 29, 30 - 39, 40 - 49]
.Обратите внимание, что это также будет соответствовать, например, 49 - 10
, поэтому вам нужно усилить это выражение, если есть какие-либо исключения, не упомянутые в вопросе.
Примечание. Запросы регулярных выражений производятся с затратами на производительность, модернизацией и использованием встроенныхв $gt $lt
функции, безусловно, были бы желательны.
Удачи!