参数化集合:IN运算符WHERE子句Cypher REST

时间:2013-05-27 14:51:09

标签: rest neo4j cypher

如何指定类似的参数 - WHERE a.name IN ["Peter", "Tobias"]。我试图在IN运算符之后传递集合作为Cypher中的参数。我通过REST API使用Cypher。

这是我的例子:

curl -X POST http://localhost:7474/db/data/ext/CypherPlugin/graphdb/execute_query -H "Content-Type: applicatio/json" --data-binary '{
    "query": "start ca=node:ca({search_ca_query}) MATCH ca_club-[:has]-ca WHERE (ca_club.CA_CLUB IN {CA_CLUB}) RETURN distinct ca.NUM_OFC_CA, ca.NME_CA, ca_club.CA_CLUB",
    "params": {
        "search_ca_query": "NUM_OFC_CA:(\"000333\", \"111033\", \"222197\")",
        "CA_CLUB": "[\"Driad\", \"No-Club\"]"
    }
}' 

我也尝试在查询中交换方括号,但即使这样也行不通。 (即我没有收到任何错误,只是得到一个空列表 - "data" : [ ]

有关如何执行此操作的任何建议吗?

1 个答案:

答案 0 :(得分:3)

您的in参数必须是一个列表:

curl -X POST http://localhost:7474/db/data/ext/CypherPlugin/graphdb/execute_query -H "Content-Type: applicatio/json" --data-binary '{
    "query": "start ca=node:ca({search_ca_query}) MATCH ca_club-[:has]-ca WHERE (ca_club.CA_CLUB IN {CA_CLUB}) RETURN distinct ca.NUM_OFC_CA, ca.NME_CA, ca_club.CA_CLUB",
    "params": {
        "search_ca_query": "NUM_OFC_CA:(\"000333\", \"111033\", \"222197\")",
        "CA_CLUB": ["Driad", "No-Club"]
    }
}'