1

我有一个 Neo4j 数据库graphDb,其中节点有一个属性'label'。我有一个'my_nodes'带有键“标签”的 Lucene 索引,它索引节点属性“标签”的值。现在我想从可能的值列表中检索属性“标签”等于一个值的节点labellist。为此,我使用以下方式编写了 Cypher 查询:

cypherQ =       """START n=node:my_nodes('""" 
                   +' OR '.join(['label:'+str(i) for i in labellist]) + """')
                   RETURN n"""
result = graphDb.query(cypherQ)

这很好,但我想知道是否有办法编写参数化查询?

我试过类似的东西:

cypherQ =       """START n=node:my_nodes('label:{params}')
                   RETURN n"""
result = graphDb.query(cypherQ, params = labellist)

但这肯定行不通,尽管如果 labellist 中有一个值它可以工作。Neo4j 教程并没有提供太多关于这个问题的材料。

我再次使用了 Neo4j 的 python 绑定。

4

1 回答 1

1

该参数适用于索引的整个查询部分,所以这将是

cypherQ =       """START n=node:my_nodes({queryParam})
               RETURN n"""

然后您在客户端代码中构建查询并将其作为一个参数传递给 Cypher。

于 2012-10-10T08:29:24.253 回答