Cypher запрос, чтобы получить все этикетки, которые имеют более 2 узлов

StackOverflow https://stackoverflow.com//questions/24059034

  •  26-12-2019
  •  | 
  •  

Вопрос

У меня есть график, в котором каждый подключенный компонент имеет определенную ярлык, скажем, Comp1, Comp2 и т. Д. Я хочу сделать Cyper Query, который возвращает все этикетки, которые имеют более одного узла. Я получаю все этикетки, как это:

match (n) return labels(n)
.

Поэтому я попытался сделать что-то вроде этого, чтобы получить только этикетки, которые мне нужно:

match (n) with labels(n) as lb where count(k:lb[0]) >= 2)  return lb limit 10
.

Но я получаю синтаксисную ошибку:

Неверный ввод ')': ожидаемые цифры, '.', 'E', пробелы, узловые метки, «[», «= ~», В том, есть, «*», «/», «%», «^ ',' + ',' - ',' <','> '," <=",">=", '=', "<>", "!=", И, XOR, или, загружайте CSV, начать, матч, расслабиться, слияние, Создать, установить, удалять, удалить, foreach, с, return, Union, ';'или конец ввода (линия 1, столбец 57)

Я также хотел бы заказать этикетки по количеству узлов, которые имеют эту метку ...

Это было полезно?

Решение

с 2.1

match (n) 
unwind labels(n) as l
with l,count(*) as cnt
where cnt > 2
return l
.

Другие советы

Если вы делаете это с Neo4j версии 2.0, вы можете добиться того, что вы хотите с этим Cyper Query:

    Start n=node(*)
    match (n)-->() with n,count(*) as rel_cnt where rel_cnt >= 2 return n;
.

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

<Сильное> Обновление

Я прочитал вопрос как узлы с более чем 1 отношением, мой плохой.Этот запрос не сделает, что спросил ОП.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top