1
我有以下问题: 我想选择路径类型为A的节点。但我不想要所有路径,只有具有特定属性的路径。问题是,在我们的数据模型中,这些属性存储在类型AD的单独节点中。对于开始和终点一切工作正常。我想我也已经制定了一般结构,因为这个查询在这里工作得很好。根据链接节点的信息选择路径
MATCH (n:A)-->(ad:AD) WHERE ad.name='AD0'
WITH n AS start
MATCH (n:A)-->(ad:AD) WHERE ad.name='AD3'
WITH n AS end, start
MATCH p = (start) -[:L*0..10]-> (end)
WHERE ALL (x in nodes(p) [1..-1] WHERE ((x.name STARTS WITH 'ad1' OR x.name STARTS WITH 'ad2')))
return p
这里的问题是,我得到了中间节点的属性出A型的节点,这不会影响我们最终的模型PE可能的。为了测试,我向A中添加了一个属性,其中包含通常存储在AD中的信息。
结果应该只包含类型A的节点链接到类型AD和AD.name的节点应该是AD0 ... AD3,但我想排除与AD节点类型A的节点与AD.name =' AD4'为例。 为此,我尝试了以下查询,但它仅返回包含链接到节点AD的节点A的路径,其中包含AD.name = AD0或AD3。
MATCH (n:A)-->(ad:AD WHERE ad.name='AD0'
WITH n AS start
MATCH (n:A)-->(ad:AD) WHERE ad.name='AD3'
WITH n AS end, start
MATCH (n:AD) WITH n AS ad, end, start //somehow needed otherwise I cannot use AD in the where clause
MATCH p = (start) -[:L*0..]-> (end)
WHERE ALL (
x in nodes(p) [1..-1] WHERE (
((x)-->(ad:AD))
AND
(ad.name ='AD1' OR ad.name='AD2')
)
)
return p
知道为什么不返回含有连接到类型AD的节点与AD.name = AD1 AD2或A型的唯一节点路径?
第一件事:在该行'MATCH(N:AD)在n广告,广告片,sources'你不及格'start'和'end'到下一个上下文。我相信你应该把这一行改成'MATCH(n:AD),用n个广告,汇,源,开始,结束,然后再试一次。 –
对不起,有一个混合,汇源是现在开始结束,纠正了上面的代码 – birnenpfluecker