Я пытаюсь построить объект запроса MongoDB на основе данных, полученных из формы поиска на стороне клиента. Моя цель - запросить базу данных с любыми и всеми критериями, предоставленными пользователем, в то же время позволяя пользователю оставлять поля поиска пустыми, если они захотят.Динамический запрос MongoDB
Это моя текущая попытка объекта запроса является:
var q = {}; // declare the query object
q['$and']=[]; // filter the search by any criteria given by the user
if((req.body.learninglanguages).length > 0){ // if the criteria has a value or values
q["$and"].push('{learningLanguages: {$in: ' + req.body.learninglanguages.split(",") + '}}'); // add to the query object
}
if((req.body.spokenlanguages).length > 0){
q["$and"].push('{spokenLanguages: {$in: ' + req.body.spokenlanguages.split(",") + '}}');
}
if((req.body.country).length > 0){
q["$and"].push('{country: {$in: ' + req.body.country.split(",") + '}}');
}
if((req.body.commethod).length > 0){
q["$and"].push('{comMethod: {$in: ' + req.body.commethod.split(",") + '}}');
}
Но полученный объект:
{ '$and':
[ '{learningLanguages: {$in: Albanian,American Sign Language,Amharic,Arabic,Arabic (Egyptian)}}',
'{spokenLanguages: {$in: Akan,Albanian,American Sign Language,Amharic}}',
'{country: {$in: Åland Islands}}',
'{comMethod: {$in: whatsapp,email,face to face,skype}}' ] }
Как правильно построить MongoDB $ в запросе от req.body объектов ?
Проконсультировались ли вы с документацией? https://docs.mongodb.com/manual/reference/operator/query/in/ – Derek
У меня есть, но я не могу найти ничего полезного в создании объектов запроса динамически. –
Пожалуйста, не забудьте проверить мой ответ ниже и пометить его правильно, если он соответствует вашим потребностям – Derek