【问题标题】:Py2neo V3 - Multiple Relationship from the same nodesPy2neo V3 - 来自同一节点的多个关系
【发布时间】:2016-12-08 01:09:25
【问题描述】:

我正在尝试从同一个节点创建多个关系,就我而言,我的用户需要能够在我的帖子中多次发表评论。我通过在 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

【问题讨论】:

    标签: python neo4j relationship py2neo


    【解决方案1】:

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

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

    所以不要有:

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

    你会:

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

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

    希望这会有所帮助。

    【讨论】:

    • 您好,感谢您的帮助!我会照你说的做,将评论更改为节点类型是有意义的,因为它还启用了用户可以喜欢或讨厌评论的操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多