#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. Спасибо!