#node.js #mongodb #mongodb-query #aggregation-framework #mongoose-schema
#node.js #mongodb #mongodb-запрос #агрегация-фреймворк #мангуст-схема
Вопрос:
У меня есть коллекция ЗАКАЗОВ, которая похожа:
_id:5f8e7d8084378609b2dca93f
user_id:"5f8465a777b1814c588521e2"
price:96
city:"Mumbai"
totalCost:96
_id:5f8e7d8084378609b2dca93f
user_id:"5f8465a777b1814c588521e2"
price:96
city:"Delhi"
totalCost:96
Затем в моем api у меня есть такие данные, как
cityInOrder='Mumbai City'
итак, как мне узнать весь заказ из моей коллекции заказов, в которых order.city является подстрокой в «cityInOrder»
это означает, что в моей первой коллекции город «Мумбаи», поэтому данные, которые я получил, — это «Город Мумбаи», поэтому я должен вернуть этот документ
Я пытался, как
db.collection('orders').find({
city: {
$regex: cityInOrder
}
})
но, похоже, это работает наоборот: (а также не должно учитываться регистр
Комментарии:
1. Был ли ответ полезным?
Ответ №1:
Есть несколько проблем.
- Вы используете
regex
опцию, в которой вам нужен вариант использования поиска. - Вы ожидаете поиск без учета регистра.
Вы можете сделать несколько вещей.
-
Если вам нужны варианты использования поиска и вы используете atlas, вы можете использовать
search
функциональность atlas. -
Если у вас нет atlas и вам нужно соответствовать этим критериям, вы можете сделать, как показано ниже.
Вы можете использовать i
опцию регулярного выражения, чтобы избежать учета регистра. Вы должны разделить входные слова пробелом и сделать or
запрос, чтобы соответствовать либо Mumbai
или city
Я бы предложил использовать вариант 1. Если это только город, и вам всегда нужно сопоставлять первый термин, вы можете попробовать второй вариант, в котором задействованы некоторые хаки.