Gremlin: создание списка по местоположению количества активных и неактивных пользователей - PullRequest
0 голосов
/ 22 марта 2019

У меня есть вершины люди, тип пользователя и местоположение.У людей есть исходящие ребра people_location и people_usertype.У людей есть свойство 'name', у usertype есть свойство 'activStatus', а у location есть свойство 'name'.

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

[[1]: https://i.stack.imgur.com/lKzZL.png]

Я хочу подсчет людей по местоположению для активацииStatus "активные "и" неактивные ", где местоположение имеет" США "в нем.

Это все, что у меня есть, только для подсчета людей по местоположению, где название места начинается с US:

g.V()hasLabel('people').out('people_publicisofficelocation')
.filter(has('name',between('US','UT')))
.groupCount().by('name')

Работает, но не дает результатов.

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Это сработало для меня!

g.V().hasLabel('Location').filter(has('name',between('US','UT'))) .project('Name','Active', 'Inactive', 'Total') .by('name') .by(__.both('people_location').out('people_usertype') .where(values('activationStatus').is(eq('Active'))).count()) .by(__.both('people_location').out('people_usertype') .where(values('activationStatus').is(eq('Inactive'))).count()) .by(__.both('people_location').out('people_usertype').count())

0 голосов
/ 24 марта 2019

Вы можете смоделировать поведение «начинается с» в версиях TinkerPop до 3.4, используя что-то вроде has('name',between('US','UT')), так что вы можете заменить строку фильтра выше этим.Если используемая вами реализация графа поддерживает TinkerPop 3.4, существуют дополнительные текстовые предикаты, для которых вы можете начинать, заканчивать и содержать.

Как уже говорили другие, если вы можете опубликовать образец addV() и addE()По шагам, составляющим часть вашего графика, будет проще дать более точный ответ.

...