如何通过在 gremlin 查询中将 UUID 作为参数传递来获取响应?

How to get the response by passing an UUID as parameter in gremlin query?

我有一个省份 ID,它是一个 UUID。我能够在不将省份 ID 作为参数传递的情况下获取所有竞选网站。

    gremlin> :> g.V().hasLabel('Province').has('code','IN').in('partOf').hasLabel('Province').has('type','state').in('partOf')..hasLabel('Province').has('type','city').in('partOf').hasLabel('Province').has('type','campaignSite').valueMap('provinceId')

==>{provinceId=[55bde744-307f-4767-8384-ed051bed414a]}
==>{provinceId=[1679cf43-f808-45b3-b132-244a03bc180b]}
==>{provinceId=[afe4ad5e-e911-4048-9364-63531657a5ee]}
==>{provinceId=[726dba5b-6d3c-45b1-8435-a726878e2304]}
==>{provinceId=[10721b98-a4e7-4672-9140-3b05c2c445d2]}
==>{provinceId=[fc61be4e-58ba-4874-b004-199a628bb1e3]}
==>{provinceId=[db43876d-267b-4063-bd51-e1ef47b77541]}
==>{provinceId=[49c68244-1ada-4131-b2dd-d8e0f6624379]}
==>{provinceId=[21bb9520-4d7d-4ffb-8458-abc1f79371ed]}
==>{provinceId=[cbcb774a-775b-42e3-92de-843bbf2141f6]}
==>{provinceId=[ed896879-3b94-491a-a759-680adcc22bbd]}
==>{provinceId=[cee46370-63b0-4cf3-898a-e38faef0edb9]}
==>{provinceId=[2850d6f1-a9fb-4e48-99d6-169c1b8570ca]}
==>{provinceId=[3c665c3a-4ddb-4909-a643-b24f27c2b71f]}
==>{provinceId=[4df1ceec-27f1-4f21-89cb-1d46b0332d21]}
==>{provinceId=[ef3094ea-390c-439d-8dfa-fdb1669fcaa2]}
==>{provinceId=[b00865c0-5482-48c4-86d5-34070a03dc12]}
==>{provinceId=[eb6eccd7-d842-4753-8b1e-3668a2cc9869]}
==>{provinceId=[184c1d55-eba0-41ac-9131-95ce5228c20d]}
==>{provinceId=[2c2c8a9e-f050-4921-a0c5-eba20e3bcc36]}
==>{provinceId=[83276863-b35b-4dde-8789-5aa90311a24b]}
==>{provinceId=[25623cb8-7564-4d8f-a276-ac40842209c7]}
==>{provinceId=[dcb9c708-8e23-4298-8369-0feb9e50c074]}
==>{provinceId=[06948da8-3cd3-4cd7-8d91-8aaa666e557d]}

但是当我将 UUID 作为参数传递给查询时,我得到的结果是什么都没有。

  g.V().hasLabel('Province').has('code','IN').in('partOf').hasLabel('Province').has('type','state').inE('partOf').outV().hasLabel('Province').has('type','city').inE('partOf').outV().hasLabel('Province').has('type','campaignSite').has('provinceId','06948da8-3cd3-4cd7-8d91-8aaa666e557d').valueMap(true)

但是当我将名称作为参数传递时,我得到了正确的结果。

    gremlin> :> g.V().hasLabel('Province').has('code','IN').in('partOf').hasLabel('Province').has('type','state').inE('partOf').outV().hasLabel('Province').has('type','city').inE('partOf').outV().hasLabel('Province').has('type','campaignSite').has('name','City Center').valueMap(true)
==>{label=Province, id=696332448, name=[City Center], location[POINT(78.448889 17.415)], type=[campaignSite], provinceId=[2c2c8a9ef050-4921-a0c5-eba20e3bcc36]}

我不知道发生了什么。

您的问题是否可能是您将 UUID 存储为实际的 UUID 对象,但正在按字符串查询:

has('provinceId','06948da8-3cd3-4cd7-8d91-8aaa666e557d') 

如果您将 "provinceId" 存储为 UUID 对象,则可以这样查询它:

has('provinceId', UUID.fromString('06948da8-3cd3-4cd7-8d91-8aaa666e557d'))

在这种情况下,我认为 JanusGraph 不会为您执行那种类型的强制转换。