我在gremlin console docker测试过。
标识符是每个顶点的唯一 ID。创建顶点时,您可以指定一个 ID 或自动生成一个。例如,
gremlin> saturn = g.addV("character").property(T.id, 1).property('name', 'saturn').property('age', 10000).property('type', 'titan').next();
==>v[1]
如果您以上述方式创建顶点,您将获得 v[1] 作为 ID,因为您指定了它。
以下未指定 ID,则 gremlin 会为您生成一个:
gremlin> g.addV("character").property('name', 'prometheus').property('age', 1000).property('type', 'god').next()
==>v[0]
假设它是第一个顶点,那么它的 ID 将为 0。
在您的场景中,如果您要查询的所有顶点都具有相同的标签并排除指定的名称,您可以试试这个(我使用的是 JanusGraph 玩具图gods):
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]]
上述查询查找所有标记为 character 的顶点并排除名称 hercules。或者您可以使用以下查询来做同样的事情。
gremlin> g.V().hasLabel('character').has('name',neq('hercules')).valueMap();
您的查询不起作用的原因是hasNot(key) 必须与键而不是值一起使用。
如果有帮助,请告诉我。