У меня есть 2 узла аккаунта и несколько узлов листинга, как показано ниже. Оператор Match приводит к отображению двух учетных записей со связью с каждым списком, связанным с этой учетной записью.
То, что я хочу сделать, это создать отношения между двумя учетными записями, основываясь как минимум на одном из этих списков, каждый из которых имеет один и тот же номер телефона.
Если возможно, я хочу увидеть взаимосвязь между двумя нарисованными узлами счета и взаимосвязь между этими двумя списками, если они принадлежат другому аккаунту.
MERGE (:Account {account_id:11})
MERGE (:Listing {account_id:11, listing_id:1001, phone:99468320, author:'Paul'})
MERGE (:Account {account_id:12})
MERGE (:Listing {account_id:12, listing_id:1002, phone:97412521, author:'Sam'})
MERGE (:Listing {account_id:12, listing_id:1003, phone:97412521, author:'Sam'})
MERGE (:Listing {account_id:12, listing_id:1004, phone:99468320, author:'Sam'})
MERGE (:Listing {account_id:12, listing_id:1004, phone:0, author:'Same'})
MATCH (a:Account),(l:Listing)
WHERE a.account_id = l.account_id
CREATE (a)-[:LISTING]->(l)
RETURN a,l;
Для последнего я попробовал следующее, но это было немного сумасшедшим, поскольку он связывал все листинги друг с другом, которые имели одинаковое число, и делали это только в том случае, если account_id был другим.
match (p1:Listing)
with p1
match (p2:Listing)
where p2.phone = p1.phone and p1 <> p2
merge(p1)-[r:SHARED_PHONE]-(p2)
RETURN p1, p2