在 Neo4j 中存储元数据的有效方法

An efficient way to store metadata in Neo4j

我有一个 Neo4j 图、节点、关系、属性,工作正常。 唯一的问题是,我需要添加一些人类可读和可理解的标签、关系类型的描述。 在 Neo4j 中有没有一种有效的方法来做到这一点? 不想将它们添加到每个节点。

谢谢。

部分选项:

  1. 对标签和关系类型使用描述性名称。这避免了对单独元数据的需要,非常方便。

  2. 像这样创建不同的 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