首页 文章

neo4j - 三个节点之间的关系

提问于
浏览
3

我是 Neo4j 的新手,我现在正在测试它 . 我遇到的一个问题是如何使用 Spring Data 正确实现涉及3个不同节点的关系 . 例如,假设我有3个 @NodeEntityUserTagTaggableObject .

你可以争论, User 可以将 Tag 添加到 TaggableObject ;我用 @RelationshipEntity TaggingOperation 模拟了这个操作 . 但是,我找不到一种简单的方法来粘合关系中的3个实体 . 我的意思是,显而易见的选择是设置 @StartNode User tagger@EndNode TaggedObject taggedObject ;但我怎样才能将 Tag 添加到关系中?

1 回答

  • 4

    我相信这被称为"hyperedge",并不是Neo4j直接支持的东西 . 你可以创建一个额外的节点来支持它,很难 . 所以你可以有一个 TagEvent 节点,其架构如下:

    (:User)-[:PERFORMED]->(:TagEvent)
    (:Tag)<-[:USED]-(:TagEvent)
    (:TagObject)<-[:TAGGED]-(:TagEvent)
    

    另一种方法是将外键存储为关系或节点上的属性 . 显然,这不是很有图形,但如果你只是需要它作为参考,可能不是一个糟糕的解决方案 . 请记住,不要使用内部Neo4j ID,因为将来的版本可能不可靠 . 您应该为此目的创建自己的ID .

相关问题