(py2neo)如何检查是否存在关系?

时间:2014-11-05 00:05:05

标签: python neo4j py2neo

假设我有以下代码:

    link = neo4j.Path(this_node,"friends",friend_node) #create a link between 2 nodes
    link.create(graph_db) #add the link aka the 'path' to the database

但是我们稍后会说:

link2 = neo4j.Path(friend_node,"friends",this_node)
link2.create_or_fail(graph_db)

基本上,link.create_or_fail()将是一个将link2路径添加到数据库的函数,或者如果路径已经存在则失败。

在这种情况下,当我拨打link = neo4j.Path(this_node,"friends",friend_node)时,我已经在this_nodefriend_node之间创建了一条路径,因此link2.create_or_fail(graph_db)应该什么都不做。这样的功能可能吗?

2 个答案:

答案 0 :(得分:5)

我为此所做的是使用以下功能:

def create_or_fail(graph_db, start_node, end_node, relationship):
    if len(list(graph_db.match(start_node=start_node, end_node=end_node, rel_type=relationship))) > 0:
        print "Relationship already exists"
        return None
    return graph_db.create((start_node, relationship, end_node))

方法graph_db.match()查找与给定过滤器的关系。

以下link帮助我明白了这一点。

答案 1 :(得分:0)

如果您已登陆此处搜索pf py2neo的较新版本,则可以致电match_one来检查关系:

graph.match(nodes = nodeList, r_type = rtype)

其中 nodeList 是关系的节点序列,而 rtype 是关系类型。