从 Neo4j 1.9.2 开始,并使用 Cypher 查询语言,我想在具有共同特定属性值的节点之间创建关系。我有一组具有属性 H 的节点 G,G 节点之间当前不存在任何关系。
在 Cypher 语句中,是否可以按 H 属性值对 G 节点进行分组,并在每个节点之间创建关系 HR 成为同一组?知道每个组的大小在 2 和 10 之间,并且对于大约 50k 个 G 节点,我拥有超过 15k 个这样的组(15k 个不同的 H 值)。
我在没有找到正确语法的情况下努力管理此类查询。下面是一个小样本数据集:
create
(G1 {name:'G1', H:'1'}),
(G2 {name:'G2', H:'1'}),
(G3 {name:'G3', H:'1'}),
(G4 {name:'G4', H:'2'}),
(G5 {name:'G5', H:'2'}),
(G6 {name:'G6', H:'2'}),
(G7 {name:'G7', H:'2'})
return * ;
最后,我想要这样的关系:
G1-[:HR]-G2-[:HR]-G3-[:HR]-G1
和:
G4-[:HR]-G5-[:HR]-G6-[:HR]-G7-[:HR]-G4
在另一种情况下,我可能想使用/比较它们的一些属性来大规模更新节点之间的关系。想象一下类型为 N 的节点和类型为 M 的节点,其中 N 个节点与 M 相关,关系名为 :IS_LOCATED_ON。位置的顺序可以存储为 N 个节点的属性(N.relativePosition 是从 1 到 MAX_POSITION 的 Long),但是我们可能需要稍后更新图模型,这样:使 N 个节点在它们之间通过一个新的 : PRECEDES 关系,这样我们就可以更容易更快地找到给定集合上的下一个节点 N。
我希望这种语言可以允许更新大量节点/关系来操纵它们的属性。
- 不可能吗?
- 如果没有,是计划好的还是计划好的?
任何帮助将不胜感激。