在 Neo4j 中存储元数据的有效方法
An efficient way to store metadata in Neo4j
我有一个 Neo4j 图、节点、关系、属性,工作正常。
唯一的问题是,我需要添加一些人类可读和可理解的标签、关系类型的描述。
在 Neo4j 中有没有一种有效的方法来做到这一点?
不想将它们添加到每个节点。
谢谢。
部分选项:
对标签和关系类型使用描述性名称。这避免了对单独元数据的需要,非常方便。
像这样创建不同的 Metadata
节点,其中 name
是标签或类型的名称(假设名称是唯一的),desc
是描述:
(:Metadata {name: 'Foo', desc: '...'})
在 :Metadata(name)
上创建索引以实现高效查询。
当您需要查看节点的元数据时,您可以这样查询:
MATCH (f:Whatever {id: 123})
MATCH (m:Metadata) WHERE m.name in LABELS(f)
RETURN f, COLLECT(m) AS metadataList
一段关系:
MATCH ()-[r:SOME_TYPE]->()
MATCH (m:Metadata) WHERE m.name = TYPE(r)
RETURN r, m
我有一个 Neo4j 图、节点、关系、属性,工作正常。 唯一的问题是,我需要添加一些人类可读和可理解的标签、关系类型的描述。 在 Neo4j 中有没有一种有效的方法来做到这一点? 不想将它们添加到每个节点。
谢谢。
部分选项:
对标签和关系类型使用描述性名称。这避免了对单独元数据的需要,非常方便。
像这样创建不同的
Metadata
节点,其中name
是标签或类型的名称(假设名称是唯一的),desc
是描述:(:Metadata {name: 'Foo', desc: '...'})
在
:Metadata(name)
上创建索引以实现高效查询。当您需要查看节点的元数据时,您可以这样查询:
MATCH (f:Whatever {id: 123}) MATCH (m:Metadata) WHERE m.name in LABELS(f) RETURN f, COLLECT(m) AS metadataList
一段关系:
MATCH ()-[r:SOME_TYPE]->() MATCH (m:Metadata) WHERE m.name = TYPE(r) RETURN r, m