[英]Passing parameters with Map to Neo4j query Scala
我有一個查詢,我需要使用帶有Scala的Neo4jDriver傳遞很多參數。 我沒有找到將它們作為地圖傳遞的任何可能,但我僅設法將它們作為查詢字符串的一部分傳遞。 所以看起來像這樣:
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"
然后我可以像neo4jSession.run(query1)
一樣運行此查詢
還有其他方法可以將數組中的這些值作為參數傳遞嗎?
通過使用參數,我的意思是這樣的:
val paramsMap = Map("lat" -> data(1).toDouble, "lon" -> data(2).toDouble, "id" -> data(0).toInt)
更新:
在Scala中,有neo4jSession.run(query,paramsMap)
映射應該是Map [String,AnyRef]類型,而我的映射是[String,Double]類型時,因為我需要傳遞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"));
}
}
希望這可以幫助。
編輯:此示例是在Java中,但要使它在scala中工作應該很簡單。
我設法通過將參數顯式更改為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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.