我正在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)