代码之家  ›  专栏  ›  技术社区  ›  Cassie

在scala中表示NEO4J查询的嵌套参数

  •  0
  • Cassie  · 技术社区  · 6 年前

    我尝试使用map[string,anyref]形式的参数运行NEO4J查询,但效果很好。但是,我希望以批处理的形式将数据发送到NEO4J,这样如果数据被转换,结果将是map[string,map[string,anyref]]或map[string,anyref]。但总的来说,我希望以这样的方式设置数据:

    {
      "nodes": [
        {
          "id": 193331567,
          "lat": 40.7599983215332,
          "lon": -73.98999786376953
        },
        {
          "id": 173062762,
          "lat": 41.959999084472656,
          "lon": -87.66000366210938
        },
        {
          "id": 66276172,
          "lat": 40.72999954223633,
          "lon": -74.01000213623047
        }
      ]
    }
    

    但是,当我将这个嵌套映射作为参数传递给查询时,它不能由neo4j呈现,那么如何在scala中表示这个嵌套的json结构呢?我应该使用和反对还是类似的?

    这是我设置的地图:

    val paramsList = Map("nodes" -> {
        data map { seq =>
          Map(
            "lat" -> seq(1).toDouble.asInstanceOf[AnyRef],
            "lon" -> seq(2).toDouble.asInstanceOf[AnyRef],
            "id" -> seq(0).toInt.asInstanceOf[AnyRef]
          )
        }}.asInstanceOf[AnyRef])
    
    val queryResults = neo4jSession.run(neo4jQuery, params.asJava)
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Cassie    6 年前

    将两个映射都转换为java.util.map是很重要的,这样neo4j就能够将此数据作为参数传递。

    val paramsList = data map { seq =>
              Map(
                "lat" -> seq(1).toDouble.asInstanceOf[AnyRef],
                "lon" -> seq(2).toDouble.asInstanceOf[AnyRef],
                "id" -> seq(0).toInt.asInstanceOf[AnyRef]
              ).asJava.asInstanceOf[AnyRef]
            }
        val queryResults = neo4jSession.run(neo4jQueries.searchQueryWithBatchParams, Map("nodes" -> paramsList.asJava.asInstanceOf[AnyRef]).asJava)