Как вы упомянули правильно, регулярные выражения применяются к строкам, поэтому приведенный выше запрос не будет работать. Однако, используя математические операции, мы можем получить первые три цифры номера, а затем сравнить их с 622, чтобы получить все телефонные номера.
Ниже запрос mongodb использует структуру агрегации для получения требуемых результатов (он может не работать для отрицательных чисел или чисел менее 4).
* Get total digits in the number using log base 10
* Subtract 3
* Raise the result to power of 10
* Perform floor division to get the first 3 digits of the number
* Finally compare the 3 digits obtained with 622.
db.alumnes.aggregate([{"$project":{"_id":1,"telefon":1, bits:{"$floor":{"$divide":["$telefon",{"$pow":[10,{"$add":[{$ceil:{"$log10":"$telefon"}},-3]}]}]}}}},{"$match":{"bits":622}}])