如果顶点是在 scala gremline 中使用复合键创建的,如何使用 vertexId 进行查询

Posted

技术标签:

【中文标题】如果顶点是在 scala gremline 中使用复合键创建的,如何使用 vertexId 进行查询【英文标题】:How to query using vertexId if vertex is made using composite key in scala gremline 【发布时间】:2020-03-14 14:07:16 【问题描述】:

我们正在使用这个库来查询 dse 图。 https://github.com/mpollmeier/gremlin-scala

    如果顶点主键只是像 UUID 这样的单个键,我们可以使用 vertexId 查询和获取顶点。 对于ex. g.V("veretxId=UUID,~label=vertexLabel")

    但是如果将顶点主键设为复合键 前任。

        addressTD : UUId
        postCode: Int
        sName: String
        lName: String.
    

现在顶点主键是这四个值的复合键。

    现在如果在 Datastax Studio 中查询并使用此查询获取顶点

    g.V("sName=\"TREVALLYN\",lName=\"TREVALLYN\",~label=tasLabel,postCode=7250,addressID=ad71d33c-0aaa-4014-a381-c189c30d45c5")
    

它将在datastax studio中返回顶点。

    在使用 https://github.com/mpollmeier/gremlin-scala 这个库时。 它似乎不起作用。我正在以这样的规定格式发送 vertexId

    "sName=\"TREVALLYN\",lName=\"TREVALLYN\",~label=tasLabel,postCode=7250,addressID=ad71d33c-0aaa-4014-a381-c189c30d45c5"
    

【问题讨论】:

【参考方案1】:

好吧,我找到了解决方案。 在scala中使用java链接hash map生成vertexId并将其传递给scala gremlin查询。

val javaLinkedHashMapVertexId = new java.util.LinkedHashMap[String, Any]()


//Putting values in hashmap
val vLabel =
  javaLinkedHashMapVertexId.put("~label", "vertexLabelName")
val pKeyLocaName =
  javaLinkedHashMapVertexId.put("localityName", "lName")
val pKeyPostCode =
  javaLinkedHashMapVertexId.put("postCode", postCode)
val pKeyStreetName =
  javaLinkedHashMapVertexId.put("streetName", "sname")
val pKeyAddId =
  javaLinkedHashMapVertexId.put("addressID","addressID")

val vertex = graph 
  .V(javaLinkedHashMapVertexId)
  .head()

顶点变量将使用链接哈希图从 dse 图中获取顶点

【讨论】:

以上是关于如果顶点是在 scala gremline 中使用复合键创建的,如何使用 vertexId 进行查询的主要内容,如果未能解决你的问题,请参考以下文章

Gremlin-顶点不与合并结合使用

Gremlin 中的决策树查询

如何在 Scala 脚本中使用 Gremlin?

Gremlin删除所有顶点

如何使用 gremlin 在两个顶点之间创建双向边?

Gremlin 组所有返回的边及其顶点