我有多个源自节点的关系。这些关系中的每一个都具有相同的标签。这些关系指向一个子节点(不是唯一唯一的)。在我通过这个关系标签获取链接到父项的所有子节点后,我通过一个名为trueindex的关系属性对它们进行了排序。然后我有一系列节点,我的客户端可以按照正确的排序顺序进行迭代。CYPHER在创建时存储同一标签的节点关系的顺序
问题出现在我试图“推,弹出,不移等等......”到这个数组上。如果我想添加一个新的关系到订单的前面,我必须创建一个新的关系,使用它将父项链接到子节点,然后向关系trueindex属性添加一个0值。问题是已经存在与trueindex值为零的关系,我需要执行一些casecading函数,以增加所有其他关系(全部来自同一父节点的相同类型)的trueindex。我试图找到一种方法来获得免费的“类似数组”的索引号功能
我认为这样做的唯一方法是首先删除源于父级的特定标签的所有关系。然后重写整个数组(为了反映正确的顺序,使用所有预先存在的关系将它们的trueindex增加一)。这对于小案例来说很好,但是如果我计划让父节点拥有大量关系,那么每次我想要添加,删除索引,流行等时,都需要重写整个数组(关系集)。但仍然保持源自父节点的关系的顺序。
在创建新关系时,Neo4j是否有某种关系功能可以写入正确的顺序?
非常感谢您的建议,您可以提供。
如果一个孩子节点可以有多个父节点(即在同一个关系标签的多个“数组”中有特征),那么如何管理:Next标签以反映每个父母的数组的成员资格? –
@BenjaminMcFerren当链接列表彼此交叉,即共享一个节点,然后标记每个唯一链表的NEXT关系时,可以为每个链表保留父节点的id作为NEXT的属性。 –
谢谢@ S.D。和jjaderberg。我现在试图从你的建议中写出一个不移位的查询,但是我对条件部分有问题。我试过CASE,但它似乎只与RETURN或WITH具体值有关,而不是允许我在条件下执行CREATE。我试图创建链接列表中的第一个链接,当这产生零结果:MATCH a- [rel:RELTYPE] - > b n.id = {_ parentnodeid},如果它产生1的结果,我想执行上面答案中描述的链接列表操作。非常感谢您对此的帮助 –