Я тестировал в консоли gremlin docker.
Идентификатор - это уникальный идентификатор для каждой вершины. При создании вершины вы можете указать идентификатор или сгенерировать его автоматически. Например,
gremlin> saturn = g.addV("character").property(T.id, 1).property('name', 'saturn').property('age', 10000).property('type', 'titan').next();
==>v[1]
Если вы создадите вершину описанным выше способом, вы получите v[1]
в качестве идентификатора, который вы укажете. Следующее не указывало ID, тогда gremlin сгенерирует его для вас:
gremlin> g.addV("character").property('name', 'prometheus').property('age', 1000).property('type', 'god').next()
==>v[0]
Предположим, что это первая вершина, тогда ее ID будет 0. В вашем сценарии, если вы запрашиваете, все вершины имеют одинаковые пометить и исключить указанное имя, вы можете попробовать это (я использую игрушечный граф JanusGraph боги ):
gremlin> g.V().has('character','name',neq('hercules')).valueMap();
==>[name:[prometheus],type:[god],age:[1000]]
==>[name:[saturn],type:[titan],age:[10000]]
==>[name:[jupiter],type:[god],age:[5000]]
==>[name:[neptune],type:[god],age:[4500]]
==>[name:[alcmene],type:[human],age:[45]]
==>[name:[pluto],type:[god],age:[4000]]
==>[name:[nemean],type:[monster],age:[20]]
==>[name:[hydra],type:[monster],age:[0]]
==>[name:[cerberus],type:[monster],age:[0]]
Приведенный выше запрос находит все вершины, помеченные символ и исключить имя Геркулес . Или вы можете использовать следующий запрос, чтобы сделать то же самое.
gremlin> g.V().hasLabel('character').has('name',neq('hercules')).valueMap();
Причина, по которой ваш запрос не работает, заключается в том, что hasNot(key)
должен использоваться с ключом, а не со значениями.
Дайте мне знать, если это поможет.