[英]Neo4J Cypher query - Null relationship
我對Neo4J相當陌生,並且在Cypher查詢中遇到問題。
我通過Neo4J Java編寫密碼查詢,我的Neo4J數據庫的設計如下:
我有一個具有諸如ID,名稱,年齡,電子郵件,性別和節點城市之類的屬性的用戶節點。 每個用戶通過一種關系(生命)與一個城市節點(具有屬性id,name)相關聯。 但是,可能會出現用戶未與城市關聯的情況。
現在,我的查詢場景是,我想在一個查詢中獲取用戶及其居住城市的所有詳細信息。
match p, c, p-[:lives]->c where p.type = 'com.Person' and c.type='com.City' and p.id = 12345 return p.name, p.age, p.email, p.gender, c.name;
當用戶與城市相關時,該查詢工作良好,但如果用戶未與城市相關聯,則查詢失敗。
您能否通過查詢處理兩種情況來幫助我。
MATCH
和WHERE
子句實際上要求所有匹配的p
必須與城市關聯。 您必須使用OPTIONAL MATCH
子句進行可選匹配。 要獲得所需的結果,請嘗試以下操作(如果沒有關聯的城市,則c.name
將為null
):
MATCH (p {type: "Person", id: 12345})
OPTIONAL MATCH (p)-[:lives]->(c {type: "City"})
RETURN p.name, p.age, p.email, p.gender, c.name;
另外,我強烈建議在p
和c
節點上使用標簽Person
和City
(而不是type
屬性)。 這將使您的查詢更加高效和清晰。 如果您對節點進行了更改,則更快的查詢如下所示:
MATCH (p:Person {id: 12345})
OPTIONAL MATCH (p)-[:lives]->(c:City)
RETURN p.name, p.age, p.email, p.gender, c.name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.