Env-Neo4j 4.0企业 插件-GDS和Apoc
我在neo4j中有一个数据,如下所示-
CREATE (a:hotel {hotel_id:'A'}),
(b:hotel {hotel_id:'B'}),
(c:hotel {hotel_id:'C'}),
(d:hotel {hotel_id:'D'}),
(e:hotel {hotel_id:'E'}),
(f:hotel {hotel_id:'F'}),
(g:hotel {hotel_id:'G'}),
(h:hotel {hotel_id:'H'}),
(i:hotel {hotel_id:'I'}),
(a)-[:HAS]->(b),
(b)-[:HAS]->(c),
(c)-[:HAS]->(d),
(d)-[:HAS]->(e),
(e)-[:HAS]->(f),
(f)-[:HAS]->(g),
(g)-[:HAS]->(h),
(h)-[:HAS]->(i),
(ap:hotel_loc {loc_id:'pp1A'}),
(bp:hotel_loc {loc_id:'pp1B'}),
(cp:hotel_loc {loc_id:'pp1C'}),
(dp:hotel_loc {loc_id:'pp1D'}),
(ep:hotel_loc {loc_id:'pp1E'}),
(fp:hotel_loc {loc_id:'pp1F'}),
(gp:hotel_loc {loc_id:'pp1G'}),
(hp:hotel_loc {loc_id:'pp1H'}),
(ip:hotel_loc {loc_id:'pp1I'}),
(a)-[:HAS_JUNC]->(ap),
(b)-[:HAS_JUNC]->(bp),
(c)-[:HAS_JUNC]->(cp),
(d)-[:HAS_JUNC]->(dp),
(e)-[:HAS_JUNC]->(ep),
(f)-[:HAS_JUNC]->(fp),
(g)-[:HAS_JUNC]->(gp),
(h)-[:HAS_JUNC]->(hp),
(i)-[:HAS_JUNC]->(ip);
2个场景
1.从开始的所有节点的列表
给定一个loc_id(例如pp1F
),我需要获取所有节点(酒店)及其关联的:HAS_JUNC节点。
f,pp1F
g,pp1G
h,pp1H
i,pp1I
pp1C
),我需要所有节点直到pp1C a,pp1A
b,pp1B
c,pp1C
我尝试了此查询,但没有结果-
MATCH s= (h1:hotel)-[:HAS_PROPERTY]->(start:hotel_propert {property_id:"pp1A"}),
e= (h2:hotel)-[:HAS_PROPERTY]->(end:hotel_propert {property_id:"pp1C"})
WITH h1, h2, s,e match p=(h1)-[:HAS*]->(h2) RETURN s,p,e
我们非常感谢您的帮助。
答案 0 :(得分:0)
要获取与特定HAS_JUNC
有直接hotel_loc
关系(假设其ID在loc_id
variable-length relationship中的酒店):< / p>
MATCH (a:hotel)-[:HAS_JUNC]->(ap)
WHERE ap.loc_id = $loc_id
RETURN ap, COLLECT(a) AS directly_connected_hotels
要获取所有与特定hotel_loc
相关的酒店,
MATCH (a:hotel)-[:HAS *0..]->()-[:HAS_JUNC]->(ap)
WHERE ap.loc_id = $loc_id
RETURN ap, COLLECT(a) AS connected_hotels
在here模式[:HAS *0..]
中,0
下界表示允许该模式匹配不存在HAS
关系的路径。