У меня есть ребро (скажем, ребро) между двумя вершинами (скажем, v1 и v2). И направление ребра от v1 до v2. В моей нынешней ситуации я должен считать нет. из ребер поступают в v2 на основе некоторого условия. Теперь я могу подсчитать количество ребер, но не могу получить данные v2.
g.V().hasLabel('V2').has('type','c').as('p').project('v2Data').by(select('p').inE('edge').count().is(gt(5)).valueMap(true))
При вышеуказанном приближении я получил ошибку
java.lang.Long cannot be cast to org.apache.tinkerpop.gremlin.structure.Element
Другой подход, который я пробовал,
g.V().hasLabel('v2').has('type','c').as('p').project('v2Data').by(select('p').inE('edge').count().is(gt(5)).select('p').valueMap(true))
The provided traverser does not map to a value: v[286724240]->[SelectOneStep(last,p), NoOpBarrierStep(2500), JanusGraphVertexStep(IN,[willingToPlayAt],edge), RangeGlobalStep(0,6), CountGlobalStep, IsStep(gt(5)), SelectOneStep(last,p), NoOpBarrierStep(2500), PropertyMapStep(value)]
Я пробовал этот ответ переполнения стека fold () подход
Я хочу получить вывод v2data = [{}, {}]
ссылка:
g.addV('game').property('id',1).as('1').
addV('game').property('id',2).as('2').
addV('game').property('id',3).as('3').
addV('game').property('id',4).as('4').
addV('game').property('id',5).as('5').
addV('game').property('id',6).as('6').
addV('loc').property('id',p1).as('p1').
addV('loc').property('id',p2).as('p2').
addE('edge').from('1').to('p1').
addE('edge').from('2').to('p1').
addE('edge').from('3').to('p1').
addE('edge').from('4').to('p1').
addE('edge').from('5').to('p1').
addE('edge').from('6').to('p1').
addE('edge').from('1').to('p2').
addE('edge').from('2').to('p2');
запрос:
g.V().hasLabel('loc').has('type','c').
project('locData').
by(where(inE('edge').count().is(gt(5))).valueMap(true).fold())
Ожидаемый результат:
{locData=[{id=[p1],....}]}
потому что gt (5) выполняется только для loc с id = p1.
Но я получаю свой результат как
{locData=[{id=[p1],....}]}
{locData=[]}(p2 is not satisfied with my condition.)