Mongoose запрашивает массив для нескольких совпадений - PullRequest
0 голосов
/ 10 февраля 2019

Я пытался выяснить это в течение последних 6 часов, и я действительно никуда не денусь.Из Panadols .. надеюсь, что кто-то может помочь:)

У меня есть простая коллекция mongoDB, которая содержит список местоположений.Столбец полного адреса представляет собой массив, содержащий компоненты этого адреса.

Вот пример:

full_address: Array 0:"APARTMENT 7" 1:"KILMINCHY COURT" 2:"KILMINCHY" 3:"PORTLAOISE" 4:"CO. LAOIS"

Я пытаюсь построить запрос, используя mongoose, который даст точный результат.

Предположим, чтоя использую это как запрос "APARTMENT 7 PORTLAOIS"

У меня есть несколько проблем.

  1. Я использую query.split(/\s+/g) для преобразования запроса в массив.Квартира 7 заканчивается тем, что она разбивается на 2 массива, который не соответствует правильной записи.
  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)
    })

Спасибо всем, кто нашел время!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...