所以我有一个graphdb,它有多个节点,每个节点之间最多只有一条边。为了收集某些数据,我需要访问所有节点,比如广度优先搜索。为此,我正在使用py2neo的match
方法:
graph.match(node, "KNOWS", end_node=None, bidirectional=True)
但是,我只需要访问一个节点一次。意思是,我的使用是不能容忍在数据集中有两个节点。如何使用py2neo在graphdb上指定这样的约束?
由于
答案 0 :(得分:0)
我建议您使用Cypher query language查询图表。 Cypher允许您在图形中定义模式,并在图形中搜索与此模式匹配的路径。
Cypher可以轻松地与py2neo一起使用。例如:
query = '''
MATCH (p1:Person})-[:KNOWS]->(friend:Person)<-[:KNOWS]-(p2:Person)
WHERE p1.name = "Bob" AND p2.name = "Jane"
RETURN DISTINCT friend
'''
results = graph.cypher.execute(query)
以上查询将返回Bob和Jane之间不同的朋友。
也许您可以添加一些数据模型的细节,以达到适当的Cypher查询的目的。