Warm tip: This article is reproduced from serverfault.com, please click

cypher-Neo4j:仅当不存在时如何调用“ CREATE INDEX”

(cypher - Neo4j: How to call "CREATE INDEX" only if not exists)

发布于 2020-04-01 15:07:27

CREATE INDEX <indexName>命令不是幂等的,如果给定索引已存在,则将导致错误。我是neo4j的新手,无法找到避免此错误的谓词。我尝试了的各种排列ANY(...),它们都放在“ db.indexes()”处。

由于CREATE INDEX ...如果索引存在则失败,如果索引不存在则DROP INDEX ...失败,因此我不知道如何编写仅在需要时创建索引的.cypher文件。

缩写形式可能类似于CREATE INDEX indexName FOR (c:SomeLabel) ON (c.someProperty) IF NOT EXISTS,但当然不存在缩写形式。

是否有某种方式可通过谓词,子查询或某些此类表达式来执行此操作?

Questioner
Tom Stambaugh
Viewed
11
Tom Stambaugh 2020-04-08 06:56:35

我尝试了两个建议,但都不能解决我的问题。我没有时间通过​​反复试验来发现如何在我的环境中安装APOC。

mbh86的答案的第一行是错误的,至少在我的系统中是这样。该命令不会被忽略,它会因错误而失败。因此,如果同一密码脚本中还有其他内容,它将失败。

我能做的最好的办法显然是将CREATE INDEX包装在命令行字符串中,从bash或python脚本运行该字符串,运行它,并检查调用程序的返回代码。

我感谢两位评论员的努力,而且我也不想任重任。