2017-01-17 13 views
0

Я структура дерева и родитель ребенка отношение корабль какИсключить путь от иерархии на основе того, где статья из Graph БД (Neo4j)

A(ROOT) -> CHILD 1 -> CHILD 2-> CHILD3(LEAF) ==== 1st Path 
A(ROOT) -> CHILD 4 --> CHILD 5 -> CHILD6 (LEAF) == 2nd Path 
A(ROOT) -> CHILD 7 --> CHILD 8 -> CHILD 9 (LEAF) == 3rd Path 
A(ROOT) -> CHILD 10 --> CHILD 11 -> CHILD 12 (LEAF) == 4th Path 

и так далее ...

Теперь я хочу написать cypher для получения всех иерархий для A для 1nd & 3-й путь на основе некоторые условия и EXCLUDE полный путь 2-й & 4-й от результата. Каким должен быть запрос. Условием могут быть любые свойства узла, такие как исключить иерархию узла, которые установили флаг популярности как false.

Итак, в этом случае пусть каждый ребенок имеет флаг ПОПУЛЯРНЫЙ. И если какой-либо узел имеет флаг, популярный для false, мы также хотим исключить этот конкретный дочерний узел &.

+0

Что вы пробовали до сих пор? Вы можете найти [Cypher refcard] (https://neo4j.com/docs/cypher-refcard/current/) полезную для поиска решения, если у вас нет этой закладки уже. – InverseFalcon

ответ

2
  • Учитывая путь, вы можете использовать функцию nodes, чтобы получить список узлов в пути.

  • Список предикатов позволяет вам указывать правила о свойствах элементов в списке. none - предикат списка, который указывает, что ровно 0 элементов в списке удовлетворяют условию предиката.

Итак, если your_path это переменная, которая представляет путь, вы собираетесь смотреть на оговорки where с чем-то вроде none(v in nodes(your_path) where v.popular = false)

+0

Не могли бы вы дать мне шифр. Я пытался использовать какой-то cypher, но не мог написать один cypher, который мог бы работать так, как вы предполагали. Также я написал один cypher соответствие p = (n: demo {id: 1}) - [: РЕБЕНОК] -> (m) WHERE m.is_popular = true С m, p MATCH p1 = (m) - [CHILD *] -> (: demo) return p1, p Это работает только тогда, когда is_popular prop находится в прямом дочернем узле, но в моем сценарии это может быть любой уровень –

+0

@smartcaveman Похоже, что ограничение включено свойства узла, а не свойства отношений, должны быть легкой настройкой, чтобы получить ответ на работу. – InverseFalcon

+0

Да, ограничение на свойства узла. –