Я пытался выяснить это в течение последних 6 часов, и я действительно никуда не денусь.Из Panadols .. надеюсь, что кто-то может помочь:)
У меня есть простая коллекция mongoDB, которая содержит список местоположений.Столбец полного адреса представляет собой массив, содержащий компоненты этого адреса.
Вот пример:
full_address: Array
0:"APARTMENT 7"
1:"KILMINCHY COURT"
2:"KILMINCHY"
3:"PORTLAOISE"
4:"CO. LAOIS"
Я пытаюсь построить запрос, используя mongoose, который даст точный результат.
Предположим, чтоя использую это как запрос "APARTMENT 7 PORTLAOIS"
У меня есть несколько проблем.
- Я использую
query.split(/\s+/g)
для преобразования запроса в массив.Квартира 7 заканчивается тем, что она разбивается на 2 массива, который не соответствует правильной записи. - Я использую оператор $ in с массивом, возвращаемым кодом в пункте 1. Проблема в том, что снова возвращаются записи, которыепросто содержит 1 слово.
Реально запрос выше должен был вернуть запись, о которой я упоминал выше.
Я пытался использовать регулярное выражение, но не могу заставить его работать с операторами $ all или $ regex.
Было бы проще добавить новый столбец, который содержит только строку полного адреса, а не хранить его в массиве.Я должен хранить компоненты в массиве для других целей.
Вот мой текущий код
address.find(
{
full_address: {
$in: query.split(/\s+/g)
}
})
.limit(10)
.exec(function (err, resp) {
if (err) {
return err
}
resolve(resp)
})
Спасибо всем, кто нашел время!