Py2neo V3 - 来自相同节点的多个关系

时间:2016-12-08 01:09:26

标签: python neo4j relationship py2neo

我正在尝试从相同的节点创建多个关系,在我的情况下,我的用户需要能够在我的帖子中多次评论。我通过在User和Post之间建立关系来做到这一点。但是当我尝试创建它时,它实际上更新了旧的关系。 我做错了什么吗?有更好的方法吗?

graph.schema.create_uniqueness_constraint('COMMENTS', 'uuid')

def comment(self, post_uuid, comment):
    post = self.graph.find_one('Post','uuid', post_uuid)
    user = self.graph.find_one('User','uuid', self.uuid)
    r_comment = Relationship(user, "COMMENTS", post, comment=comment, uuid=uuid4().hex, date=str(datetime.utcnow()))
    self.graph.create(r_comment)
    return True

1 个答案:

答案 0 :(得分:1)

更高级别的py2neo API不支持此类型的模型。你将不得不进入Cypher来解决这个问题。

考虑您的模型是否可以以其当前形式进行扩展。在py2neo中进行这种设计决策的原因是这种模型通常是非最优的,通常可以通过添加另一个节点来改进。在您的情况下,节点将代表注释。

所以不要:

(:User)-[:COMMENTS_ON]->(:Post)

你会:

(:User)-[:WRITES_COMMENT]->(:Comment)-[:RELATES_TO_POST]->(:Post)

这会将模型中的另一个“名词”提取为新的节点类型。因此,您现在可以链接到注释本身,如果您将其建模为关系,则无法进行此操作。

希望这有帮助。