有没有方法在neo4j中传递参数以匹配标签?
我正在使用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在编译时如果不知道标签,就没法进行优化。