我正在尝试从相同的节点创建多个关系,在我的情况下,我的用户需要能够在我的帖子中发表多次评论。我通过在用户和帖子之间创建关系来做到这一点。但当我尝试创建它时,它实际上更新了旧的关系。 我做错了什么吗?有更好的方法吗?
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)
这会将模型中的另一个“名词”提取到新的节点类型中。因此,您现在可以创建指向评论本身的链接,如果您将其建模为关系,则这是不可能的。
希望这有帮助。
关于python - Py2neo V3 - 来自同一节点的多个关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41030121/