Neo4j:有没有一种方法可以基于一组满足特定条件的节点来创建新节点

时间:2019-06-24 03:43:28

标签: java database graph neo4j cypher

我有一个neo4j数据库正在运行。 我还有一个每5分钟运行一次的过程,它的作用是创建“ Point”类型的节点。

“点”具有以下属性:

pointId,cameraId,classId,groupId,datetime

类型为“点”的节点与其自身相关,如果: pointId cameraId classId groupId 一样。

是否有可能以某种方式获取与其自身相关的所有节点“ Point”,并基于该节点组创建一个新节点“ Line”,其中“ Line”-[:CONTAINS]->“ Point”?

更新:下图显示了我所拥有的和我所需要的。为简单起见,我刚刚定义了属性“ camera”,如果节点Point共享相机,则需要将其分组。

enter image description here

1 个答案:

答案 0 :(得分:1)

是的,有可能。

您需要为每对这些属性收集所有点。然后创建Line节点,然后在创建的线和所有分组点之间创建关系。

在以下查询中将必需的属性添加到行节点。

MATCH (p:Point)
WITH p.pointId as pointId, p.cameraId as cameraId, p.classId as classId, p.groupId as groupId, collect(p) as related_points
CREATE (line:Line)
WITH line, related_points
UNWIND related_points as point
CREATE (line)-[:CONTAINS]->(point)