Вы можете использовать оператор запроса $where
для выполнения нестандартных запросов, подобных этому, но он не работает:
db.test.find({$where: 'this.amount.toString().match("125")'})
Но вы не можете использовать $where
в совокупности $match
.
Чтобы сделать это в совокупности, я думаю, вам нужно будет поддерживать отдельную строковую версию amount
в каждом документе, который вы используете для поиска по регулярному выражению.
{
_id: ObjectId("5b17ab5489264c2df61ed2d6"),
amount: 12514545,
amountString: '12514545'
}
Тогда вы можете искать его так же, как и любое другое строковое поле:
Test.aggregate([
{ "$match": { "$or": [
{ "amountString": { "$regex": searchString }},
{ "firstName": { "$regex": searchString }}
] } }
])