Neo4j И предложение - PullRequest
       5

Neo4j И предложение

0 голосов
/ 21 февраля 2020

Новый для Neo4j и ищет предложение AND в запросе Cypher. Предположим, у меня есть узлы Person и Role. Человек может иметь несколько ролей (менеджер, лидер, I C, QA, ...). Я хочу найти группу людей, которые выполняют роли менеджера и QA.

Что-то вроде: MATCH (p: Person) - [: HAS_ROLE] -> (r: Role {name: "Manager"}) AND (p) - [: HAS_ROLE] -> (r: Role { имя: "QA"}) ВОЗВРАТ p

Ответы [ 2 ]

1 голос
/ 21 февраля 2020
MATCH (p:Person)-[:HAS_ROLE]->(:Role{name:"Manager"})
WHERE (p)-[:HAS_ROLE]->(:Role{name:"QA"})
RETURN p

этот запрос может быть использован, если его всего две роли. Но если вы хотите попробовать для многих, то

MATCH (p:Person)-[:HAS_ROLE]->(r:Role)
WITH p, COLLECT(r.name) as roles
WHERE ALL (x IN ["Manager","QA"] WHERE x IN roles)
RETURN p

вы можете обновить ["Manager","QA"] со всеми ролями, которые вы хотите проверить для человека.

0 голосов
/ 21 февраля 2020

Вы используете r дважды

Попробуйте: Роль вместо r: Роль

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