有没有方法在neo4j中传递参数以匹配标签?

1 投票
1 回答
1029 浏览
提问于 2025-04-18 11:12

我正在使用py2neo这个库,想在不同的方法之间传递一个参数(一个标签),用于匹配,但我搞不清楚语法该怎么写。在浏览器中,我会这样做:

MATCH n
where n:`Name`
RETURN n 

这是我的Python代码,我想做类似的匹配:

def similar_noder(a):

try:
    graph_db = neo4j.GraphDatabaseService(url)
    query = neo4j.CypherQuery(graph_db, 
    """CYPHER 2.0
        MATCH n      
        where (n:`{z}`)
        RETURN id(n)
        """) 
    result = query.execute(z=a)
    for r in result:           
        label = ", ".join(str(e) for e in (r.values[0]))#label
        print label            
except Exception as e:
    print e

在这个例子中,“a”就是我想传递和匹配的标签“Name”。我想找到所有带有这个标签的节点。

1 个回答

4

当你要查找的节点不多时,可以尝试这样做:

MATCH (n)
WHERE {z} IN labels(n)
RETURN n

不过,这样的速度可能不太快,因为Cypher在编译时如果不知道标签,就没法进行优化。

撰写回答