Гремлин: найти названия проектов, которые имеют дубликаты (по имени) - PullRequest
0 голосов
/ 20 марта 2019

У меня есть проекты с именем в качестве свойства, и я хочу создать список дубликатов. Я попытался сделать это, сгруппировав проекты по имени и используя предложение where, чтобы отфильтровать результаты, где счет имени проекта больше 1, и показать эти имена.

Ниже приведен список имен проектов с количеством каждого
g.V (). hasLabel ( 'проект'). groupCount (). по ( 'имя')

Поэтому я добавил фильтр, чтобы найти только повторяющиеся значения, и он не работает:
g.V (). hasLabel ( 'проект'). groupCount (). (от имени ''). где (выберите (значения) .а (GT (1))). значения ( 'имя')

Ответы [ 2 ]

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

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

g.V().hasLabel('project')
.group().by(values('name')
.fold()).unfold().filter(select(values)
.count(local).is(gt(1))).select(keys)
0 голосов
/ 20 марта 2019

Вам нужно unfold() на счет Map(), таким образом:

g.V().hasLabel('project').
  groupCount().
    by('name').
  unfold().
  where(select(values).is(gt(1))).
  values('name')

Если вы не unfold(), у вас есть Map в конвейере, и он пытается применить ваш where() к этому объекту в целом, когда вы действительно хотите применить его к каждой отдельной паре ключ / значение в Map.

...