假设,我们在neo4j DB中有以下数据->
java实体表示如下->
@NodeEntity
public class Place {
@Id
@GeneratedValue
private Long id;
private String name;
}
@NodeEntity
public class Monument {
@Id
@GeneratedValue
private Long id;
private String name;
}
@NodeEntity
public class Person {
@Id
@GeneratedValue
private Long id;
private String name;
@Relationship(type = "VISITED", direction = Relationship.OUTGOING)
private Monument monument;
@Relationship(type = "STAYS", direction = Relationship.OUTGOING)
private Place place;
}
现在,我想获取所有填充链接的地方和纪念碑(如果有)的人。这意味着,密码查询将不仅向我提供List
凭借我在Cypher Query语言方面的基本知识,我已经尝试过但无法获得预期的结果。
MATCH p =(place:Place)<-[STAYS]-(person:Person)-[VISITED]->(monument:Monument)返回p
MATCH p =(person:Person)-[STAYS]->(place:Place)RETURN p
MATCH p =(person:Person)返回p
我找不到能找到所有这些的查询。
答案 0 :(得分:1)
您需要将关系放入可选匹配项中,例如:
MATCH (person:Person)
OPTIONAL MATCH (person)-[:VISITED]->(monument)
OPTIONAL MATCH (person)-[:STAYS]->(place)
return person, place, monument
否则,neo4j将查询1)中的关系视为必需,这就是为什么'Ron'是唯一的结果。