Neo4j中节点的属性值能否设置为与其他节点相关联的变量?
Neo4j 节点关联动态属性实现方案
Neo4j 默认不支持将节点属性设置为直接关联其他节点的动态变量,所有属性默认是静态存储的固定值,但可以通过以下两种主流方案实现你描述的需求:
方案一:存储规则+通过关系维护节点关联(图数据库推荐方案)
不要在属性里硬编码关联逻辑,优先给「开门」节点和「T1」节点建立关联关系,同时把判断规则存在关系的属性里,查询时动态计算结果,符合图数据库的设计规范,查询性能和可维护性都更高。
建立关联关系的Cypher示例:MATCH (open:开关 {name:"开门"}), (t1:温度 {name:"T1"}) CREATE (open)-[:TRIGGER_CONDITION {rule: "value > 10"}]->(t1)触发条件查询的Cypher示例:
MATCH (open:开关 {name:"开门"})-[:TRIGGER_CONDITION]->(t:温度) RETURN t.value > 10 AS 开门条件是否触发方案二:用触发器实现属性自动更新
如果你需要「开门」节点的属性直接存储最终的布尔判断结果,不需要每次查询计算,可以自定义Neo4j触发器,监听所有温度节点的属性更新事件,当T1节点的温度值变化时,自动触发逻辑重新计算「开门」节点的条件属性值并更新。注意:该方案需要额外安装触发器相关插件,适合对查询性能要求极高、规则更新频率低的场景,维护成本比方案一高。
内容的提问来源于stack exchange,提问作者Mumu
相关产品推荐
相关产品推荐

