Я думаю, что вам нужно условие "и" для идентификаторов в смежных вершинах, поэтому я бы выбрал один из следующих подходов:
g.V().hasLabel('bar')
and(out('baz').hasId('123'),out('baz').hasId('456'))
.id()
или, возможно, (обратите внимание, что «2» в is(2)
должно быть равно количеству идентификаторов, которые вы пытаетесь проверить):
g.V().hasLabel('bar')
where(out('baz').hasId('123','456').count().is(2))
.id()
Я предпочитаю этот второй подход, я думаю, поскольку вы только итерируете out('baz')
один раз, чтобы подтвердить фильтр. Вы можете сделать его немного более производительным, добавив limit(2)
следующим образом:
g.V().hasLabel('bar')
where(out('baz').hasId('123','456').limit(2).count().is(2))
.id()
Таким образом, фильтр where()
выйдет как можно раньше, в зависимости от того, как быстро вы найдете вершины «123» и «456». Я полагаю, что наложение limit()
также защитит вас от ситуаций, когда у вас есть более одного ребра к этим вершинам, и вы в конечном итоге посчитаете больше, чем вам действительно нужно для успеха where()
.