3
我有以下图形设置:的Cypher查询返回重复的结果
start root=node(0)
create (F {name:'FRAME'}), (I {name: 'INTERACTION'}), (A {name: 'A'}), (B {name: 'B'}),
root-[:ROOT]->F, F-[:FRAME_INTERACTION]->I, I-[:INTERACTION_ACTOR]->A, I-[:INTERACTION_ACTOR]->B
而下面的查询将返回复制的结果:
START actor=node:node_auto_index(name='A')
MATCH actor<-[:INTERACTION_ACTOR]-interaction-[:INTERACTION_ACTOR]->actor2,
frame-[:FRAME_INTERACTION]->interaction
RETURN frame, interaction
Query Results
+-----------------------------------------------------+
| frame | interaction |
+-----------------------------------------------------+
| Node[1]{name:"FRAME"} | Node[2]{name:"INTERACTION"} |
| Node[1]{name:"FRAME"} | Node[2]{name:"INTERACTION"} |
+-----------------------------------------------------+
2 rows
52 ms
即使我再添加一个开始节点试图限制结果,我有相同的:
START actor=node:node_auto_index(name='A'), frame=node:node_auto_index(name='FRAME')
MATCH actor<-[:INTERACTION_ACTOR]-interaction-[:INTERACTION_ACTOR]->actor2,
frame-[:FRAME_INTERACTION]->interaction
RETURN frame, interaction
我想了解为什么查询返回重复编辑结果。 我知道可以通过使用distinct来返回唯一的结果,但是是否可以通过匹配路径来更改查询以仅返回一个结果,而无需应用额外的操作(distinct)?
(设置和查询可以在http://console.neo4j.org/?id=q2e0ay测试)
谢谢!我被集中在一个更复杂的查询中,在这个简单的例子中,我没有看到眼前的解决方案。 – 2013-04-09 11:03:44