У меня есть база данных MongoDB, в которой есть список городов, штатов и почтовых индексов. Я хотел бы иметь возможность запускать запрос, который будет проверять каждое из этих полей в зависимости от ввода пользователя, и мне трудно понять, как это сделать. Вот пример документа в БД:NodeJS, Mongoose - Query city, state или zip
{"_id":"92199","city":"San Diego","state":"CA"}
Вот мой маршрут, я использую, чтобы вернуть этот документ:
app.get('/city/:city', function(req, res){
var query = City.aggregate([
{ $group: { _id: "$zip", city: {"$first" : "$city"}, state: {"$first" : "$state"} } },
{ $match: {"city": new RegExp(req.params.city, "i")} }
]);
query.exec(function(err, city){
if(err){
console.log(err);
return res.send(err);
}
console.log(city);
res.json(city);
});
});
Проблема заключается в том, что если я несколько запросов в Сан-Диего, штат Калифорния в запрос будет терпеть неудачу, потому что он ищет только город. Как запросить город, состояние и zip (_id), чтобы значение все равно возвращалось?
не следует выполнять агрегацию один раз, а не за запрос –
Я просто использовал агрегацию, потому что все мои поисковые запросы, казалось, указывали на нее как способ запроса нескольких полей. – yhussain
Это звучит как обычный запрос (а не что-то, что требует агрегации) - что вы имеете в виду, «запрос провалится, потому что он только ищет город»? – Semicolon