Создать отношение на основе значения свойства Cypher neo4j - PullRequest
0 голосов
/ 10 марта 2020

У меня есть два узла для Клиентов, C1, C2, если тип перевода дебетовый, тогда я хочу создать отношение в одном направлении, если кредит, тогда я хочу противоположное направление.

Ниже, после получения C1 и C2, я пробовал использовать пункт where

UNWIND nextHits as transfer
MERGE (C1:Customer {CusNo = transfer.CusNo })
MERGE (C2:Customer {CCusNo = transfer.CCusNo })
MERGE (C1)-[:Transfer]->(C2) WHERE transfer.type = 'Credit'
MERGE (C2)-[:Transfer]->(C1) WHERE transfer.type = 'Debit'
RETURN C1,C2

Выше не работает

1 Ответ

1 голос
/ 10 марта 2020
UNWIND nextHits as transfer
MERGE (C1:Customer {CusNo = transfer.CusNo })
MERGE (C2:Customer){CusNo = transfer.CusNo })
WITH C1,C2, CASE transfer.type = 'Credit' WHEN TRUE THEN [1] ELSE [] END as creditList,
CASE transfer.type = 'Debit' WHEN TRUE THEN [1] ELSE [] END as deditList
FOREACH(x IN creditList| MERGE (C1)-[:Transfer]->(C2))
FOREACH(x IN debitList| MERGE (C2)-[:Transfer]->(C1))
RETURN C1,C2

мы используем выражение CASE здесь, чтобы создать список с одним элементом или без элементов на основе условия. И мы перебираем этот список для создания отношений. CASE transfer.type = 'Debit' подразумевает, что тип передачи - «Кредит», поэтому в CreditList будет один элемент, а debitList будет пустым. Итак, мы объединяем отношение типа кредита один раз и дебетуем ноль раз. надеюсь, это поможет :)

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