我试图从相同的节点创建多个关系,以我为例,我的用户需要能够在我的帖子中发表多次评论。我通过在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)
这会将模型中的另一个“名词”提取到新的节点类型中。因此,您现在可以建立到评论本身的链接,如果将其建模为关系则是不可能的。
希望这可以帮助。