我试图从相同的节点创建多个关系,以我为例,我的用户需要能够在我的帖子中发表多次评论。我通过在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

最佳答案

更高级别的py2neo API不支持这种类型的模型。您必须进入Cypher才能使用此功能。

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

因此,除了:

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


你将会拥有:

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


这会将模型中的另一个“名词”提取到新的节点类型中。因此,您现在可以建立到评论本身的链接,如果将其建模为关系则是不可能的。

希望这可以帮助。

09-10 09:57
查看更多