Найти узел по идентификаторам связанных узлов в запросе шифра neo4j - PullRequest
0 голосов
/ 16 апреля 2020

Я хотел бы выбрать узел TotalResult по связанным узлам ModelResults с запросом шифра.

На изображении ниже я хотел бы выбрать указанный серый узел, который связан ровно с 3 зелеными узлами результатов с идентификаторами [ 5368, 5410, 5388]

enter image description here Я знаю, что приведенный ниже запрос неверен, потому что если вы дадите ему идентификаторы [5368, 5410], он выберет оба серых «итоговых результата» узлы.

MATCH (totalResult:TotalResult)-[r:USE]->(modelResult:ModelResult) WHERE ID(modelResult) IN [5368, 5410, 5388] RETURN totalResult, r, modelResult;

Я пытался создать запрос, подобный приведенному ниже, но это неверный запрос.

MATCH (totalResult:TotalResult)-[r:USE]->(modelResult:ModelResult) 
WHERE ALL(modelResult IN CALL {MATCH (result:ModelResult) WHERE ID(result) IN [5368, 5410, 5388] RETURN result})
AND ALL(CALL{MATCH (result:ModelResult) WHERE ID(result) IN [5368, 5410, 5388] RETURN result} EXISTS nodes(modelResult))
RETURN totalResult, r, modelResult;

Пожалуйста, дайте мне знать, можно ли выбрать узел по его точно идентификаторы связанных узлов и как?

Спасибо.

1 Ответ

1 голос
/ 16 апреля 2020

Если список желаемых ModelResult идентификаторов передается как ids параметр , это должно вернуть результат, если totalResult относится ко всем указанным ModelResult s * 1007. * и никаких других :

MATCH (totalResult:TotalResult)-[r:USE]->(modelResult:ModelResult)
WITH totalResult, COLLECT(ID(modelResult)) AS mIds, COLLECT({r:r, modelResult:modelResult}) AS data
WHERE SIZE(data) = SIZE($ids) AND ALL(id IN $ids WHERE id IN mIds)
RETURN totalResult, data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...