Массив Foreach - Neo4j - PullRequest
       12

Массив Foreach - Neo4j

0 голосов
/ 08 апреля 2020

У меня есть этот запрос, и у меня есть проблема с FOREACH:

MATCH (pc:car), (pa:parts)
With pc.car as CAR, collect(pa.name_parts) as parts_total
Foreach (i IN parts_total in CASE WHEN not (:car)-[:related_to5]->(:parts) is null then [1] else [0] END | Match (parts_total) Return parts_total)
Return *

Я хотел бы иметь значение "0" для элементов массивов, не связанных с "car" и "1" для элементов, подключенных вместо.

1 Ответ

0 голосов
/ 08 апреля 2020

Этот запрос имеет множество синтаксических ошибок. Например, у вас не может быть других предложений (например, MATCH) в предложении FOREACH.

Это должно делать то, что вы хотите, довольно эффективно:

MATCH (pa:parts)
WITH COLLECT(pa) AS ps
MATCH (car:car)-[:related_to5]->(p:parts)
WITH ps, car, COLLECT (p) AS partsInCar
RETURN car,
  REDUCE (s = [], i IN ps |
    s + {part: i, value: CASE WHEN i IN partsInCar THEN 1 ELSE 0 END}) AS result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...