Как найти $ regex для целочисленного значения в mongodb? - PullRequest
0 голосов
/ 11 июня 2018

У меня есть следующая коллекция.

[{
  _id: ObjectId("5b17ab5489264c2df61ed2d6"),
   amount: 12514545
}]

Я хочу найти 125 и получить следующий документ.

Я пробовал это, но не работает:

db.collection.find({
  amount: {
    $regex: 125
  }
})

Было бы лучше, если бы это можно было сделать с помощью совокупного запроса.

  Test.aggregate([
    { "$match": { "$or": [
    { "amount": { parseInt(searchString) }},
    { "firstName": { "$regex": searchString }}
  ] } }
  ])

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете использовать оператор запроса $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 }}
  ] } }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...