Приведение типов в запросе gremlin

Как преобразовать значение типа String в тип Integer в консоли gremlin с помощью AWS Neptune GDB. У меня есть свойство age со строковым значением, которое необходимо преобразовать в тип Integer для математических операций в запросе. все предложения приветствуются.

Я попробовал ниже вопросы, предложенные kelvin. Но получили эти исключения.

    gremlin> g.V(1).values('age').map{(String)it}.next()
    Script336735.groovy: 1: [Static type checking] - Inconvertible types:cannot cast org.apache.tinkerpop.gremlin.process.traversal.Traverser <E2 extends java.lang.Object> to java.lang.String
    gremlin> g.V(1).values('age').map{(Integer)it}.next()
    Script336963.groovy: 1: [Static type checking] - Inconvertible types: cannot cast org.apache.tinkerpop.gremlin.process.traversal.Traverser <E2 extends java.lang.Object> to java.lang.Integer

Мое требование - привести значение String к Integer/long

3 ответа

Решение

Спасибо, Кельвин. Наконец, этот запрос работает с AWS-Neptune GraphDB.

gremlin> g.V(1).values('age').map{(''+it).toInteger()}
==>25

вместо toInteger() мы можем использовать некоторые другие методы Java, подобные этому.

Мне любопытно, почему для начала вы храните возраст в виде строки, но, тем не менее, если вы можете использовать лямбду, вы можете выполнить приведение внутри шага карты. Вот пример из моего графика воздушных маршрутов (взлетно-посадочные полосы - целочисленный тип):

gremlin> g.V(3).values('runways').map {(String)it}.next().class
==>class java.lang.String

Ура Кельвин

Согласно https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-differences.html#w3aac12c22c10c15c47

Neptune не поддерживает лямбда-шаги.

Если я попробую выполнить запросы выше, я получу:

Не удалось интерпретировать запрос Gremlin: синтаксический анализ запроса не удался...

Это то, что поддерживалось в прошлом?

Другие вопросы по тегам