Как найти частичное совпадение на основе числа в mongodb?

#regex #mongodb #mongoose

#регулярное выражение #mongodb #мангуст

Вопрос:

У меня есть документ, в котором есть некоторые идентификаторы (не ObjectId), которые являются числами. Бывают также случаи, когда родительский идентификатор не будет передан функции. В настоящее время у меня есть

 return ExampleModel.find({
  $or: [
    {
      parentId: new RegExp(exampleDtoSearch.parentId.toString()),
    },
    { /*other things to search*/ } 
]
})
  

Ошибка, которую я получаю, если я передаю родительский идентификатор, — это «Ошибка утверждения: выражение, оцененное в ложное значение «.

И ошибка, которую я получаю, если нет идентификатора, заключается в том, что он не может выполнить toString для undefined.

Как мне выполнить регулярное выражение (или что-то подобное) для частичного совпадения чисел в mongodb / mongoose?

Комментарии:

1. Какое отношение к этому имеет mongoose?

2. Я знаю, что иногда mongoose будет реализовывать вещи иначе, чем обычный mongodb, поэтому я хотел предоставить этот контекст.

Ответ №1:

Используйте $convert .

 MongoDB Enterprise > db.foo.insert({a:111})
WriteResult({ "nInserted" : 1 })

MongoDB Enterprise > db.foo.aggregate([{$addFields:{a_s:{$convert:{input:'$a',to:'string'}}}},{$match:{a_s:/1/}}])
{ "_id" : ObjectId("5fb571b0886cb08b7890f27f"), "a" : 111, "a_s" : "111" }
  

Комментарии:

1. можете ли вы это объяснить? или как бы я использовал это с переменной?

2. Прочитайте документацию для всех задействованных операторов, если что-то непонятно, задавайте конкретные вопросы. Если вы спрашиваете, как использовать переменные javascript, создайте для этого новый вопрос.

3. Я спрашиваю, как бы я использовал это с параметром вместо жестко заданного значения, и я спрашиваю, как это сделать в JS, не используя командную строку mongo. Спасибо!