如何使用neography将参数作为neo4j的cypher查询的一部分的关系传递

时间:2017-05-17 17:28:34

标签: ruby neo4j cypher neography

我想使用cypher关系传递给我的neography查询,并让查询在该关系上执行。

我目前收到错误:

query_response = @neo.execute_query("MATCH   (fromNode)-[{relationship}]->(toNode) 
                                    WHERE   fromNode.bot_client_id = {bot_client_id} AND toNode.epoch_utc_i > {fromTime} AND toNode.epoch_utc_i < {toTime} 

                                    RETURN  toNode.value
                                    LIMIT   {limit}", 
                                    {
                                        :fromTime => fromTime, :toTime => toTime, :bot_client_id => @bot_client_id, 
                                        :limit => limit, :relationship => relationship.to_sym
                                    }
                                )  



Neography::SyntaxException: Parameter maps cannot be used in MATCH patterns (use a literal map instead, eg. "{id: {param}.id}") (line 1, column 21 (offset: 20))
    "MATCH   (fromNode)-[{relationship}]->(toNode) "

1 个答案:

答案 0 :(得分:0)

由于{relationship}是仅包含单个属性的地图,因此您可以执行以下操作之一。我们说地图是{x: 123}

  1. 您可以使用MATCH模式中的地图中的属性:

    MATCH (fromNode)-[ {x: {relationship}.x} ]->(toNode)
    
  2. 您可以将x的值作为参数传递,而不是使用地图。在此示例中,我假设您已将{relationship}替换为{x}

    MATCH (fromNode)-[ {x: {x}} ]->(toNode)
    
  3. 注意:最新版本的neo4j已弃用{x}语法,现在更喜欢$x