通过neo4j shell将参数传递给cypher查询

通过neo4j shell将参数传递给cypher查询,neo4j,Neo4j,我想知道是否有一种方法可以通过neo4j shell将参数传递给密码查询。尽管查询的细节可能无关紧要,但我希望通过neo4j shell执行以下查询: MATCH (src:Node{id:1}),(dst:Node{id:2}), p = shortestPath((src)-[*..15]-(dst)) RETURN p; 我要做的是将其放入文件query.cql中,然后通过运行neo4j shell-file query.cql来执行它。但是,每次运行它时,我都可能希望更改源ID和目

我想知道是否有一种方法可以通过neo4j shell将参数传递给密码查询。尽管查询的细节可能无关紧要,但我希望通过neo4j shell执行以下查询:

MATCH (src:Node{id:1}),(dst:Node{id:2}),
  p = shortestPath((src)-[*..15]-(dst))
RETURN p;
我要做的是将其放入文件query.cql中,然后通过运行neo4j shell-file query.cql来执行它。但是,每次运行它时,我都可能希望更改源ID和目标ID。因此,理想情况下,我希望我的查询是这样的:

MATCH (src:Node{id:srcid}),(dst:Node{id:dstid}),
  p = shortestPath((src)-[*..15]-(dst))
RETURN p;
$ { echo "export foo='bar'" ; cat; } | neo4j-shell -path my.db
并在命令行中定义srcid和dstid。这可能吗

谢谢

是的

编辑如果您想在进入交互式查询之前从shell执行此操作,可以使用一个简洁的小bash技巧,如下所示:

MATCH (src:Node{id:srcid}),(dst:Node{id:dstid}),
  p = shortestPath((src)-[*..15]-(dst))
RETURN p;
$ { echo "export foo='bar'" ; cat; } | neo4j-shell -path my.db
但这有一个很大的缺点;neo4j外壳的行编辑功能将不可用;您只需通过
cat
向其提供交互式数据,因此它不是真正的交互式数据


通常,这可以通过使用initfile来解决,initfile中包含一些cypher命令,这些命令将在每次交互会话期间加载,但据我所知,neo4j shell不支持这一点,所以这个bash技巧是我所能提供的最好方法。

感谢您的快速响应。您知道有没有一种方法可以在不进入交互式neo4j shell环境的情况下实现这一点?我正试图从bash shell中执行此操作,但执行等效操作(在bash中执行导出)似乎不起作用。编辑答案以解决后续问题。上一个建议成功了。更准确地说,在我的例子中,我将query.cql重写为:
MATCH(src:Node{id:{srcid}),(dst:Node{id:{dstid}),p=shortestPath((src)-[*…15]-(dst))返回p---然后运行:
{echo“export srcid=1”;echo“export dstid=2”;cat query.cql;}neo4j shell-c