Как получить ответ, передав UUID в качестве параметра в запросе гремлина?

У меня есть идентификатор провинции, который является UUID. Я могу получить все сайты кампании без передачи идентификатора провинции в качестве параметра.

    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]}

Я не знаю, что происходит.


person Himabindu    schedule 27.08.2019    source источник


Ответы (1)


Возможно ли, что ваша проблема заключается в том, что вы храните свой UUID как фактический объект UUID, но запрашиваете строку:

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

Если вы храните «provinceId» как объект UUID, запросите его как таковой:

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

Я не думаю, что JanusGraph делает для вас такое принуждение в этом случае.

person stephen mallette    schedule 27.08.2019
comment
Но когда я попробовал этот запрос g.V (). . Я получил правильный результат - person Himabindu; 28.08.2019
comment
Спасибо, UUID.fromString сработал. Но приведенный выше запрос сработал, должна быть разница. почему это работает. Помогите мне развеять это сомнение. - person Himabindu; 28.08.2019
comment
Я не знаю. Это не должно работать, и ваш вопрос указывает на то, что это не так, но ваш комментарий говорит, что это так, поэтому я не понимаю, что, по вашим словам, происходит, а что нет. Помимо путаницы, правило простое: если вы храните свои данные как UUID, то запрашивайте их как UUID, а не как String — вы можете использовать String только в том случае, если используемая вами графовая база данных имеет возможность принудить ваш String к UUID. - person stephen mallette; 28.08.2019
comment
Спасибо. Но когда я прохожу через все вершины, это не работает. Но когда я прыгаю прямо в последнюю вершину, формат строки работает. Вот в чем мое сомнение. - person Himabindu; 28.08.2019
comment
извините, но я не понимаю, что это значит. возможно, вам следует обновить свой вопрос или задать новый с полным сеансом консоли Gremlin, который демонстрирует, что работает, а что нет. - person stephen mallette; 29.08.2019