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

Neo4j - Include Null values for relationships that dont exist

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

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

这return是原始有关系的节点,不是没有对应MARRIED_TO关系的节点。

下面只有 returns 两个空列

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

这个returns

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

诀窍是匹配你想要匹配的所有节点return(在本例中为所有 Person 节点),然后可选地匹配他们的配偶。