Несколько совпадений в операторе MATCH в Cypher / Neo4j / Spring - PullRequest
0 голосов
/ 24 марта 2020

У меня есть приложение Spring, и в моем репозитории у меня есть запрос, в котором я сопоставляю лекарства и только ОДИН пациент, но не определено, сколько лекарств будет выбрано от пользователя.

Фактический запрос Cypher:

MATCH (p:Patient) where ID(p) = ({0})
MATCH (d:Drug) where ID(d) in [({1}),({2}),({3})]  
RETURN p, d

В этом запросе я сопоставляю 3 лекарства, но мне бы хотелось, чтобы это было похоже на выражение for в зависимости от того, сколько лекарств выберет пользователь.

Что-то вроде этого:

MATCH (p:Patient) where ID(p) = ({0})
MATCH (d:Drug) where ID(d) in [({1}),({2}),({3}),.....({10})] <-- size could be 1 or more
RETURN p, d

Как я могу решить эту проблему? Возможно ли как-то l oop в Cypher? Если да, то как мне решить мою проблему?

1 Ответ

2 голосов
/ 24 марта 2020

Вы должны передавать значения как параметры .

Например, если вы используете параметр p_id для передачи идентификатора Patient и d_ids параметр для передачи коллекции из Drug идентификаторов:

MATCH (p:Patient) WHERE ID(p) = $p_id
MATCH (d:Drug) WHERE ID(d) IN $d_ids
RETURN p, d
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...