Вот три бита Gremlin, о которых у вас возник вопрос:
g.V().has(T.id, "some-id")
g.V().has(id, "some-id")
g.V().has("id", "some-id")
Первые два вернут вам тот же результат, что и id
является членом T
(как точка стиляПользователи Gremlin обычно статически импортируют id
, чтобы на него можно было кратко ссылаться. Последний обход отличается от первых двух, поскольку в качестве значения String
он ссылается на стандартный ключ свойства с именем «id». Вообще говоря, TinkerPop рекомендует не использовать имя ключа свойства, например «id» или «label», так как это может привести к ошибкам и путанице со значениями T
.
Что касается второй части вашеговопрос вращается вокруг:
g.V().has('Event', T.id, event['Id'])
g.V().hasLabel('Event').has(T.id, event['Id'])
Вы не можете передать T.id
в 3-ю форму has()
, как указывает Кельвин, поскольку подпись шага допускает только String
в этой второй позиции. Также не имеет смысла разрешать T
там, потому что T.label
уже учитывается первым аргументом, а T.id
относится к фактическому идентификатору элемента графа. Если вы знаете это значение, то вам не нужно было бы указывать T.label
в первую очередь, поскольку T.id
уже однозначно идентифицирует элемент. Вы бы просто сделали g.V(event['Id'])
.