neo4j - Neo4j 如何定义枚举类型?

标签 neo4j

我有一个节点:

Database: {
  name: 'example',
  description: 'this is the example database'
  type: 'relational'
}

我希望 type 是一个枚举,例如:

DB_TYPE enum {
  relational
  document
  graph
  other
}

第一个问题:我如何定义这个枚举类型,以便所有“数据库”节点都可以有一个 type 属性,它是这 4 个值之一?

我是否应该将其保留为字符串而忘记制作枚举?

我考虑过为这些节点使用标签,例如::Relational:Document

第二个问题:如果我应该使用标签,确定给定的 database 节点是关系型、文档型、图形型还是其他节点的密码语法是什么?

最佳答案

  1. 据我所知,无法为节点定义枚举属性。根据您的描述,我认为您最好使用标签。如果您真的不想使用标签,另一种选择可能是每种类型有一个节点,然后将数据库节点连接到这些类型节点。但是根据图表的大小,这些类型的节点可能会成为具有很多关系的 super 节点。我不会建议这种方法。再次对我来说,此类用例中的最佳解决方案是使用标签。

  2. 最简单的方法是根据 labels(a) 检查标签,其中 a 是您的节点。例如:

MATCH (a) where 'Relational' in labels(a) OR 'Document' in labels(a) ....

还有一个 APOC 过程 apoc.label.exists 可以使用:

MATCH (a) where apoc.label.exists(a, 'Relational') OR apoc.label.exists(a, 'Document')....


关于neo4j - Neo4j 如何定义枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60027003/

相关文章:

Neo4j Cypher 多个 WITH 关键字

java - 启动 org.neo4j.kernel.EmbeddedGraphDatabase 时出错并且无法解决依赖关系

node.js - 使用 Cypher 查询时,数字 Node 属性会四舍五入

java - 适用于 Java 的 Neo4j 连接器

node.js - Neo4J 可以处理多少个并行连接

neo4j - 如何将neo4j dump导入当前数据库

neo4j - 使用定期提交从csv加载大数据时如何在Neo4j中处理事务回滚

java - 使用 Neo4j Spatial 查找节点

neo4j - neo4j GPG key 是否已过期?

neo4j - 创建的节点似乎没有添加到 neo4j 数据库中