我正在尝试从相同的节点创建多个关系,在我的情况下,我的用户需要能够在我的帖子中多次评论。我通过在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
答案 0 :(得分:1)
更高级别的py2neo API不支持此类型的模型。你将不得不进入Cypher来解决这个问题。
考虑您的模型是否可以以其当前形式进行扩展。在py2neo中进行这种设计决策的原因是这种模型通常是非最优的,通常可以通过添加另一个节点来改进。在您的情况下,节点将代表注释。
所以不要:
(:User)-[:COMMENTS_ON]->(:Post)
你会:
(:User)-[:WRITES_COMMENT]->(:Comment)-[:RELATES_TO_POST]->(:Post)
这会将模型中的另一个“名词”提取为新的节点类型。因此,您现在可以链接到注释本身,如果您将其建模为关系,则无法进行此操作。
希望这有帮助。