我是Cypher和Graph数据库的新手...我正在尝试从我的数据库中显示一种树,带有源节点,而下游叶子。我只想过滤仅具有某些标签且所有关系对其属性具有特定约束的叶子。 根目录是 Column1 ,我也想到达 Column1 ,但是路径中可能有一些 Column2
我写了这个:
MATCH p=(:Column1{name:'Root'})-[*1..7]-(:Column1)
WHERE
all(n IN nodes(p)
WHERE all(l in labels(n)
WHERE l IN ['Column1', 'Column2']
)
AND n.deleted='0'
)
AND all(r IN relationships(p)
WHERE r.deleted='0')
RETURN p
在Neo4J浏览器中启动时,结果图是错误的,并且包含一些在 deleted ='1'处的关系。但是,如果我导出CSV表并查找Deleted ='1'(甚至只有1),则没有结果。
因此,查询似乎是正确的,但是以某种方式,图形显示将显示已删除= 1的关系。
是错误,是查询吗?
我也尝试过
MATCH (:Column1{name:'Root'})-[*1..7{deleted:'0'}]-(t)
WHERE t:Column1 or t:Column2
RETURN *
但是,在我的数据库中,与之前的查询相比,它需要永久完成。
答案 0 :(得分:0)
答案 1 :(得分:0)
尝试做
MATCH (:Column1 {name: 'Root'})-[*1..7 {deleted: '0'}]-(t)
WHERE labels(t)[0] IN ['Column1', 'Column2']
RETURN *
根据Column1
节点的数量以及您数据库中有多少Column1
个节点,我不建议您在没有LIMIT 50
或您想要的任何限制的情况下使用此方法。如果您这样做
PROFILE
MATCH (:Column1 {name: 'Root'})-[*1..7 {deleted: '0'}]-(t)
WHERE labels(t)[0] IN ['Column1', 'Column2']
RETURN *
您将看到这使多少数据库命中,这确实消耗资源。