npobedina
npobedina

Reputation: 341

Neo4j python binding: Querying node index for a set of values

I have a Neo4j database graphDb where nodes have a property 'label'. I have a Lucene index 'my_nodes' with key 'label' which indexes the values of node property 'label'. Now I want to retrieve nodes which have property 'label' equal to a value from a list of possible values labellist. To accomplish this, I wrote a Cypher query the following way:

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

That works fine, but I wonder whether there is a way to write a parameterized query anyhow?

I tried something like:

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

But this surely does not work, though if there is one value in labellist it works. And the neo4j tutorial does not provide much material on this issue.

Once again I am using a python binding for Neo4j.

Upvotes: 1

Views: 324

Answers (1)

Peter Neubauer
Peter Neubauer

Reputation: 6331

The parameter is working for the whole query part of the index, so this would be

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

and you construct the query in your client code and pass it into Cypher as one parameter.

Upvotes: 1

Related Questions