Вы смешиваете Groovy и Gremlin.Когда вы делаете это:
gremlin>3.is(3)
==>true
gremlin>[3].getAt(0).is(3)
==>true
, вы не используете Gremlin, и, следовательно, это не шаг is()
.В этом случае вы выполняете проверку на равенство ссылок , используя метод Groovy is()
.Это также объясняет ваши результаты, когда вы углубляетесь в своем вопросе, как в:
gremlin>g.V(0).values('name').next().length().is(lte(20))
==>false
, потому что, как только вы делаете next()
, вы больше не делаете Gremlin.Ничего после того, что представляет шаги Gremlin, это просто код Groovy.Вы вызываете метод String.length()
, а затем оператор Groovy is()
и сравниваете int
, возвращаемое из length()
с lte(20)
, который является экземпляром P
, таким образом:
gremlin> "xyz".length().is(lte(20))
==>false
Если вы хотите использовать Gremlin для проверки длины строки, то я не уверен, что есть способ сделать это вне использования лямбды:
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().values('name').filter{it.get().length()<=4}
==>lop
==>josh