通过注入Cypher查询的变量设置关系方向



我正在Neo4j中开发一个图模型,其中关系的方向有意义。在创建新节点和它们之间的关系时,我希望通过在Cypher查询中注入一个变量来动态设置关系的方向。

换句话说,我想做

CREATE (from:Signature)-[:CONNECTS]->(to:Signature)

CREATE (from:Signature)<-[:CONNECTS]-(to:Signature)

只有一个查询,用一个变量控制方向。(示例严重简化。(

作为参考,我使用TypeScript和neo4j-driver包与Neo4j数据库进行交互。由于我才刚刚开始我的图形数据库之旅,我目前只是简单地编写原始查询,而不是使用查询生成器或OGM(尽管我的理解是,在NPM生态系统中甚至不存在适合Neo4j的OGM(。因此,这个问题背后的动机是避免重复一个复杂的查询,以便能够翻转关系的方向。(很明显,即使只有一个查询生成器,这也是微不足道的。(

这可能是一种方法,使用direction作为变量

WITH n,m,
'out' AS direction

WITH CASE WHEN direction = 'out' THEN n ELSE m END AS from,
CASE WHEN direction = 'out' THEN m ELSE n END AS to

CREATE (from)-[:CONNECTS]->(to)

最新更新