我正在尝试以这样的方式创建 (action)->(state) 对,以便如果:
- 动作存在,使用它,而不是创建新的
- 状态存在,使用它,而不是创建新的
并在单个查询中完成。
如果状态与以前的调用不同,我将创建新的操作节点。所以我最终得到了多个相同的动作节点。
query = "merge (:state {id:%s})-[:q {q:%s}]->(:action {id:%s})" % (state, 0, action)
我使用半径图。
唯一的方法是使用 3 个查询而不是 1 个来实现此目的:
graph.query mem 'merge (:state {id:9})'
graph.query mem 'merge (:action {id:9})'
graph.query mem 'match (s:state), (a:action) where s.id = 9 and a.id = 9 create (s)-[:q {q:0.3}]->(a)'