Mongo $ OR - Точное совпадение не возвращается - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть запрос, который, как я думал, даст результаты, когда любые номерные знаки соответствуют любому из объектов поиска, но если я ищу точное совпадение, которое, как мне известно, находится в базе данных, оно не возвращается, однако частичные совпадения все еще возвращаются.

В следующем фрагменте кода я думал, что первый объект будет соответствовать при точном совпадении текста, поскольку он охватывает все свойства, которые документ может иметь для категории.

$or: [
                {
                    "p1": req.query.p1,
                    "p2": req.query.p2,
                    "numbers": req.query.numbers,
                    "l1": req.query.l1,
                    "l2": req.query.l2,
                    "l3": req.query.l3,
                    "category": "current_plates"
                },
                {
                    "numbers": req.query.numbers,
                    "l1": req.query.l1,
                    "l2": req.query.l2,
                    "l3": req.query.l3,
                    "category": "current_plates"
                },
                {
                    "p1": req.query.p1,
                    "p2": req.query.p2,
                    "numbers": req.query.numbers,
                    "category": "current_plates"
                },
                {
                    "l1": req.query.l1,
                    "l2": req.query.l2,
                    "l3": req.query.l3,
                    "category": "current_plates"
                }
              ]

ПримерДокумент:

{
    "_id": "5dc5d7ee0eef0f4ea047b0e6",
    "p1": "A",
    "p2": "K",
    "numbers": "20",
    "l1": "N",
    "l2": "A",
    "l3": "T",
    "price": 699,
    "plate": "AK20NAT",
    "category": "current_plates"
  }

Строка поиска: AD67NAT, она разбита на части:

p1 = A p2 = D numbers = 67 l1 = N l2 = A l3 = T

Текущая пластина состоит из "p1, p2, numbers, l1, l2, l3", категории и идентификатора монго, так что похоже на точное совпадение, скажем, AD67NAT должно быть возвращено, но это не так иЯ не могу понять, почему.

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