Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Map将参数传递给Neo4j查询Scala_Scala_Neo4j - Fatal编程技术网

使用Map将参数传递给Neo4j查询Scala

使用Map将参数传递给Neo4j查询Scala,scala,neo4j,Scala,Neo4j,我有一个查询,需要使用Neo4jDriver和Scala传递很多参数。我没有找到任何可能将它们作为映射传递的方法,但我只设法将它们作为查询字符串的一部分传递。看起来是这样的: val arr = Array("18731", "41.84000015258789", "-87.62999725341797") val query1 = "MATCH ()-relations traversal WHERE mt.topic_id = gt.topic_id AND distance(point

我有一个查询,需要使用Neo4jDriver和Scala传递很多参数。我没有找到任何可能将它们作为映射传递的方法,但我只设法将它们作为查询字符串的一部分传递。看起来是这样的:

val arr = Array("18731", "41.84000015258789", "-87.62999725341797")
val query1 = "MATCH ()-relations traversal  WHERE mt.topic_id = gt.topic_id AND distance(point({ longitude: " + data(2) +  ", latitude: " + data(1) + "}),point({ longitude: v.lon, latitude: v.lat })) < 4000 AND mt.member_id = " + data(0) + " RETURN distinct g.group_name " +
          "as group_name, e.event_name as event_name, v.venue_name as venue_name"
val paramsMap = Map("lat" -> data(1).toDouble, "lon" -> data(2).toDouble, "id" -> data(0).toInt)
更新:

在Scala中,有
neo4jSession.run(query,paramsMap)
当我的映射类型为[String,AnyRef]时,映射类型应该为map[String,AnyRef],因为我需要传递Double和int值。因此,我不知道如何在我的案例中使用此方法。

请尝试此自述页面。在这里,它以映射的形式传递数据

这里给出的示例代码是:

Driver driver = GraphDatabase.driver("bolt://localhost");
String query = "MATCH (:Movie {title:{title}})<-[:ACTED_IN]-(a:Person) RETURN a.name as actor";

try (Session session = driver.session()) {

    StatementResult result = session.run(query, singletonMap("title", "The Matrix"));
    while (result.hasNext()) {
        System.out.println(result.next().get("actor"));
    }
}
Driver-Driver=GraphDatabase.Driver(“bolt://localhost");

String query=“MATCH(:Movie{title:{title}})我通过显式地将参数更改为AnyRef来传递参数,查询工作得非常好

val paramsMap = Map("lat" -> data(1).toDouble.asInstanceOf[AnyRef], "lon" -> data(2).toDouble.asInstanceOf[AnyRef], "id" -> data(0).toInt.asInstanceOf[AnyRef])


    def toRow(record: Record):Seq[String] =
      fieldsToRetrieve.map(record.get(_).toString
      )

    neo4jSession.run(neo4jQueries.searchQuery, paramsMap.asJava)

我看到了这个例子。我已经为我的问题添加了一个更新。一个粗略的方法是使用Java对象,如
Integer
Double
,因为它们是
AnyRef
层次结构的一部分。如果您执行
Integer.valueOf(data(0))
,则会更容易。使用这种方法,参数映射类型将是Map[String,Integer]而不是AnyRef