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

Python Py2neo V3-来自相同节点的多个关系,python,neo4j,relationship,py2neo,Python,Neo4j,Relationship,Py2neo,我试图从相同的节点创建多个关系,在我的情况下,我的用户需要能够在我的帖子中多次发表评论。我通过在用户和帖子之间建立一种关系来做到这一点。但当我尝试创建它时,它实际上更新了旧的关系。 我做错什么了吗?有更好的方法吗 graph.schema.create_uniqueness_constraint('COMMENTS', 'uuid') def comment(self, post_uuid, comment): post = self.graph.find_one('Post','uu

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

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

更高级别的py2neo API不支持这种类型的模型。你必须进入Cypher来处理这个问题

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

因此,我们没有:

(:User)-[:COMMENTS_ON]->(:Post)
你应该:

(:User)-[:WRITES_COMMENT]->(:Comment)-[:RELATES_TO_POST]->(:Post)
这会将模型中的另一个“名词”提取到新节点类型中。因此,您现在可以创建到注释本身的链接,如果将其建模为关系,这是不可能的


希望这有帮助。

嘿,谢谢你的帮助!正如您所说,将注释更改为节点类型是有意义的,因为它还支持用户喜欢或讨厌注释的操作。