如何在Neo4j Cypher中检查索引是否存在

5

我正在尝试找到一种方法来检查cypher模式索引中是否存在特定的索引。 我可以通过使用call db.indexes()找到所有索引。 但是如何检查特定索引?

2个回答

5
如果您希望索引存在,我建议直接运行Cypher以创建索引。无论索引是否存在,在调用之后都可以保证其存在。
另一方面,如果您只是想要显示目的或其他什么信息,可以使用YIELDCALL继续执行Cypher。例如...
CALL db.indexes() YIELD label, properties WHERE label="Person" RETURN *

对于 db.indexes,您可以使用的变量包括 description, label, properties, provider, state, type(必须按名称逐个返回,YIELD a,b,c,d,e,f 无效)。

尽管我是通过解析结果完成的,但这是纯金啊..谢谢@Tezra - Abdullah Al Noman
我的问题是,如果尝试创建一个已经存在的索引,neo4j会抛出一个错误。有没有一种方法可以创建一个不会因为索引已经存在而抛出错误的索引? - mcv
@mcv,那么您需要在调用者上放置锁定,以便他们知道已经调用了create index,或者像cybersam建议的那样使用APOC扩展。 - Tezra
在neo4j 4.3之后,使用新的索引创建语法:Neo4j:如何仅在不存在时调用“CREATE INDEX” - ms007

4

是的,但你如何将其用作条件语句呢?它会返回 truefalse,但在现实世界中,除非你能将其作为另一个执行的一部分,否则该值毫无意义。 - Benjamin R
1
您可以使用 APOC 过程 apoc.whenapoc.do.when 来执行 if-then-else 处理。 - cybersam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接