如何使用cypher将动作限制为几个关系

时间:2014-07-01 10:51:46

标签: neo4j cypher

我有一个neo4j数据库,其中包含(s)和(u)之间的一对多关系。每个(s)最多可以达到约100(u)。

我想返回所有(s)节点,但只链接到一个(u)节点,然后用它做一些事情。更具体地说,我正在将属性从(u)节点复制到(s)节点。即我不想归还所有( - )关系,每个(u)只有一个(u)。

我试过了:

MATCH (s)--(u) WITH s, u LIMIT 1 SET s.prop = u.prop

但是这只返回一个节点的一个节点,而我正在尝试为每个节点返回一个(u)。

编辑:另一种方法,似乎有效,但速度很慢,如下:

MATCH (s)--(u)
WITH s, HEAD(COLLECT(u.existprop)) AS prop
SET s.newprop = prop
RETURN s

1 个答案:

答案 0 :(得分:1)

对于其他试图做同样事情的人来说,这就是我最终要做的事情:

MATCH (s)--(u)
WITH s, HEAD(COLLECT(u.existprop)) AS prop
SET s.newprop = prop
RETURN s

首先从(u)节点收集属性,然后选择第一个属性。我目前还没有意识到另一种方式,但如果有一种方法可以选择第一个项目而不必先返回并收集所有其他项目,那就太好了。

相关问题