首页 > 解决方案 > 如何使用 py2neo 计算与节点的关系(一种类型)

问题描述

使用 py2neo 4.x、neo4j 3.5.3、python 3.7.x

我所拥有的:图中的一个节点a

graph = Graph(
    host="alpha.graph.domain.co",
    auth=('neo4j', 'theActualPassword')
)
# grab the graph
a = Node("Type", url="https://en.wikipedia.org/wiki/Vivendi")
# create a local node with attributes I should be able to MERGE on
graph.merge(a,"Type","url")
# do said merge
graph.pull(a)
# pull any attributes (in my case Labels) that exist on the node in neo4j...
# ...but not on my local node
# better ways to do this also would be nice in the comments
relMatch = RelationshipMatcher(graph)

我想要什么:连接到多少"CREATED"关系的计数a描述这些关系如何连接到节点 a 的 neo4j 返回(在本例中为 7)

我试过的:

x = relMatch.get(20943820943)使用关系的 ID 之一来查看是什么。它返回None文档说这意味着

如果没有找到这样的关系,则返回 py:const:None。与 matcher[1234] 相比,如果没有找到实体,则会引发 KeyError。

这让我觉得我完全错了。

也:relMatch.match(a,"CREATED") 这引起了

raise ValueError("节点必须以序列或集合的形式提供")

告诉我我绝对没有正确阅读文档。

不一定使用这个类,这可能不是我认为的那样,我如何计算有多少["CREATED"]被指向a

标签: pythonpython-3.xneo4jpy2neo

解决方案


下面的工作,并且比以前的实现更容易编写,但我认为这不是正确的方法。

result = graph.run(
    "MATCH(a) < -[r:CREATED]-(b) WHERE ID(a)=" + str(a.identity) + " RETURN count(r)"
).evaluate()
print(result)

推荐阅读