通过Neo4j浏览器提交多个分号分隔的Cypher语句

Dir*_*way 8 neo4j cypher

我想通过网络浏览器提交一份分号分隔的Cypher写入语句列表,但我收到错误...

MERGE (a:user{id: 'A'}) 
MERGE (b:product{id: '1'}) 
CREATE UNIQUE (a)-[:USED_BY]->(b); 


MERGE (a:user{id: 'B'}) 
MERGE (b:product{id: '4'})  
CREATE UNIQUE (a)-[:USED_BY]->(b); 
Run Code Online (Sandbox Code Playgroud)

我正在创建新节点并在后面的关系语句中引用它们,所以我想提交单独的查询而不是一个长的查询,我想通过Cypher这样做.

最好的方法是什么?

jpe*_*nna 16

现在有一个简单的设置可以做到这一点:Enable multi statement query editor.

然后你可以运行多个用分号分隔的语句 ;

neo4j 屏幕截图,突出显示了设置和上述两个语句的结果


Nik*_*yrh 9

在Neo4j Cypher的多个无关查询中找到了解决方案

简单地放在WITH count(*) as dummy独立命令之间.


Vic*_*aev 2

据我所知,这是不可能直接做的,但如果你有Python,你可以安装py2neo,然后使用一个非常简单的片段,它利用neo4j的REST api,即

from py2neo import cypher

session = cypher.Session("http://localhost:7474/db/data/")
tx = session.create_transaction()
cypher = [
    "MERGE (a:user{id: 'A'})"
    "MERGE (b:product{id: '1'})"
    "CREATE UNIQUE (a)-[:USED_BY]->(b)", #first statement 

    "MERGE (a:user{id: 'B'})" 
    "MERGE (b:product{id: '4'})"
    "CREATE UNIQUE (a)-[:USED_BY]->(b)" #second statement
] 

for q in cypher:
    tx.append(q)

tx.commit()
Run Code Online (Sandbox Code Playgroud)

这就能完成工作。