基于Graph DB(Neo4j)中的where子句从层次结构中排除路径

时间:2017-01-17 16:12:33

标签: neo4j cypher graph-databases

我有像

这样的树结构和父子关系
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

依旧......

现在我想编写一个密码查询来获取A和1的所有层次结构。第3条路径基于某些条件排除完整路径2&结果排名第4。应该是什么查询。 条件可以是节点的任何属性,如将流行标记设置为false的节点的排除层次结构。

所以在这种情况下,假设每个孩子都有一个标志热门。如果任何节点的标志设置为流行为假,我们希望排除该特定的子节点。它下面的节点也是。

1 个答案:

答案 0 :(得分:2)

  • 给定路径,您可以使用nodes函数获取路径中节点的列表。

  • 列表谓词允许您指定有关列表中项目属性的规则。 none是列表谓词,它指定列表中的0个项目满足谓词条件。

因此,如果your_path是表示路径的变量,那么您将使用where

之类的内容查看none(v in nodes(your_path) where v.popular = false)子句