指定只访问一次条件'使用py2neo在neo4j中的节点上

时间:2015-12-22 07:28:54

标签: neo4j py2neo

所以我有一个graphdb,它有多个节点,每个节点之间最多只有一条边。为了收集某些数据,我需要访问所有节点,比如广度优先搜索。为此,我正在使用py2neo的match方法:

graph.match(node, "KNOWS", end_node=None, bidirectional=True)

但是,我只需要访问一个节点一次。意思是,我的使用是不能容忍在数据集中有两个节点。如何使用py2neo在graphdb上指定这样的约束?

由于

1 个答案:

答案 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查询的目的。