2016-08-05 60 views
0

enter image description hereCyper查询 - 属性值变化传播

您好,

在上述曲线图中,我们有一个场景,其中在一个节点的值属性中的任何一个被更新,则该值的效果,以被传播到其余节点。应如何通过密码查询来传播此值更改事件。

感谢您的支持

+0

对下游节点匹配时遵循哪些关系有任何限制吗? – InverseFalcon

+0

更新必须发生在上游,即如果属性在节点上发生变化(比如说例子中的R5),那么所有具有影响的上游节点都应该重新计算值属性。(例如,R5应该对R4,R3 ,在某些情况下R2或R5应该对S1..S5节点产生影响) – j2eeuser

+0

声音就像规则不一样。没有标签或不了解这些节点的逻辑以及它们之间关系的含义,提供任何解决方案都相当困难。我想我们需要一些更具体的方法来解释这些场景应该如何工作,以及在我们提供任何类型的建议之前,哪些节点或关系需要通过哪些标准。 – InverseFalcon

回答

0

是,这个属性应该永远是这个组节点相同的要求?如果它必须相同,那么我建议将它解压缩到一个节点中,并从所有应该使用它的节点创建与该节点的关系。

将该值放在一个地方,它将只需要在该节点上进行单个属性更改,并且所有内容都将处于正确的状态。

编辑

要求相当模糊,所以我的答案也会模糊。

如果您根据关系类型进行匹配,那么您需要某种关系的多样性,并可能在匹配中指定允许的类型。如:

MATCH (start:RNode)-[:R45|R34|R23|R12*]->(r:RNode) 
WHERE start.ID = 123 (or however you're matching on your start node) 

,直到没有更多的允许的关系,继续穿越,将符合您的StartNode了关系链的每一个节点上。

如果您需要更复杂的扩展,您可能需要查看APOC过程库的Path Expander

找到正确的匹配查询后,它应该只是对所有匹配节点进行重新计算的问题。

+0

嗨,属性值不会相同。依赖节点的属性值需要根据一些规则进行计算 – j2eeuser

+0

编辑我的答案了一下,希望它更符合您的要求 – InverseFalcon

+0

对MATCH查询中可以使用的关系类型标签数量有任何限制: R45 | R34 |等等,假设有大约20到30个标签?将这么多标签贴在关系上是否正确?所有的S节点可能不会在R5处终止。其中一些将分支并终止于不同的R节点。所以我想包括SNode名称(S1,S2)作为关系标签名称。 – j2eeuser