проверьте, появляется ли значение в списке, созданном на шаге key() в гремлине

У меня есть вершина со свойством title. У меня есть другие вершины с исходящими ребрами, которые имеют несколько свойств. Я пытаюсь найти вершины с исходящими ребрами, где значение свойства title является ключом свойства на ребре.

Например, вершина A имеет свойство {'title': ['lebron']}, а ребро B имеет свойство {'lebron': 'basketball'}.

Это пример графика, который у меня есть:

      g.addV('person').property(id, 'bob')
g.addV('person').property(id, 'alice').addE().to(__.V('bob')).property('lebron', 'basketball')
g.addV('player').property('title', 'lebron').addE().from(__.V('bob'))

Это запрос, который я сейчас придумал, который не работает:

         g
    .V('alice')
    .outE()
    .as('b')
    .otherV()
    .hasId('bob')
    .as('c')
    .select('b')
    .properties()
    .key()
    .fold()
    .as('k')
    .select('c')
    .outE()
    .otherV()
    .has('title', within('k')))
    .valueMap('title')
    .toList(); 

1 ответ

Попробуй это:

      g
.V('alice')
.outE()
.as('b')
.otherV()
.hasId('bob')
.as('c')
.select('b')
.aggregate('keys').by(properties().key())
.select('c')
.out()
.where(values().where(within('keys')))
.valueMap('title')
.toList()
Другие вопросы по тегам