Я предлагаю хранить «реальный» объект даты, а не строку. Затем вы можете использовать обычные операторы сравнения. Если вы не можете сделать это, альтернативой будет хранить возрастное целое число. Последний менее полезен, так как его необходимо обновлять каждый год, но его стоит рассмотреть.
РЕДАКТИРОВАТЬ: Альтернативой, которая позволит вам работать с вашими существующими данными, будет передача функции соответствия в collection.find (). Очевидно, это влияет на производительность, так как функция должна оцениваться для каждого объекта в коллекции. См. $, где документы . Например ...
var date = function() {
return new Date(this.dob) < new Date('1/1/1990');
}
db.mycollection.find(date);