python - Py2neo V3 - 来自同一节点的多个关系

标签 python neo4j relationship py2neo

我正在尝试从相同的节点创建多个关系,在我的情况下,我的用户需要能够在我的帖子中发表多次评论。我通过在用户和帖子之间创建关系来做到这一点。但当我尝试创建它时,它实际上更新了旧的关系。 我做错了什么吗?有更好的方法吗?

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/

相关文章:

python - 推特 API : How to search in User home timeline

python - 将批图像文件从子文件夹复制到父文件夹

cypher - neo4j 密码查询太慢

python - Maya API Python 对称表与 MRichSelection?

ruby-on-rails - 如何解决 "Connection refused - connect(2) (Errno::ECONNREFUSED) (Excon::Errors::SocketError)"?

graph - Neo4j遍历时节点属性比较

core-data - CoreData可选的多对多关系永远不会为零?

mysql - Laravel 5.6 中的 Controller 继承

javascript - 查询多对多关系 : get all products with tag by name

python - 获取 Pandas 数据框中每一行的第二大值的列名