Neo4j -为不存在的关系包含Null值



我有一个非关系数据库,并使用Neo4j密码查询。我已经多次看到这个问题,但我似乎不能让它为我的查询工作。基本上,我从DB返回特定类型的所有节点。节点的类型称为人。从中,我找到了与MARRIED_TO关系中的原始Person相关的节点。并非所有的原始节点都具有MARRIED_TO关系。对于这些,我想返回null。我试过使用可选的MATCH,但这似乎也不起作用。

OPTIONAL MATCH (p:Person)-[m:MARRIED_TO]-(p2:Person) 
Return p.name as Name, p2.name as Spouse
ORDER By Name, Spouse

返回有关系的原始节点,但不返回没有对应的MARRIED_TO关系的节点。

下面只返回两个空列

OPTIONAL MATCH (p:Person)-[m:MARRIED_TO]-(p2:Person) 
WHERE (m) is null
Return p.name as Name, p2.name as Spouse
ORDER By Name, Spouse

感谢你所能提供的任何帮助。

MATCH (p:Person) 
WITH p 
OPTIONAL MATCH (p)-[:MARRIED_TO]-(p2) 
RETURN p.name, p2.name

这返回

╒═══════════╤═════════╕
│"p.name"     │"p2.name"│
╞═══════════╪═════════╡
│"Anna"       │"Ben"    │
├───────────┼─────────┤
│"Ben"        │"Anna"   │
├───────────┼─────────┤
│"Catherine"  │null     │
└───────────┴─────────┘

诀窍是匹配您想要返回的所有节点(在本例中是所有Person节点),然后可选地匹配它们的配偶。

最新更新