我正在使用图形数据库Neo4j。我想将以下两个密码查询合并为一个。
START a=node(2)
MATCH (a)<-[:TYPE]-(vendrs)<-[:FROM]-(prods)
RETURN vendrs.name, count(prods)
START a=node(2)
MATCH (a)<-[:TYPE]-(vendrs)<-[:FROM]-(prods)
WHERE(prods.r?<>-1 and prods.f?<=0 and prods.I! = 1)
RETURN vendrs.name, count(prods)
id为2的节点是一个超级节点,其节点通过TYPE关系表示与之相关的供应商,并且每个节点的节点都与FROM关系相关。
我想将它们组合成一个,所以我尝试了:
START a=node(2)
MATCH (a)<-[:TYPE]-(vendrs)<-[:FROM]-(prods)
RETURN vendrs.name,
count(prods),
filter(count(prods) where(prods.r?<>-1 and prods.f?<=0 and prods.I! = 1));
但它不起作用?我该如何纠正呢?
Error:SyntaxException: Unclosed parenthesis
答案 0 :(得分:1)
不确定是什么版本的Neo4j,但我看到的2.0过滤器是
FILTER(x IN coll WHERE x.prop <> {value})
所以我假设你真正想要的是那些过滤产品的数量,而不是COUNT()上的FILTER()?
COUNT(FILTER(product IN products WHERE product.r?<>-1 AND product.f?<=0 AND product.I! = 1)) AS filterCount
没有尝试过,但这是有道理的。也用于全名(产品而不是产品或什么)只是为了让其他读者清楚。注意我不确定'!'是的,您可能最好查看Cypher关于所有'?'的性能提示可选的婴儿车,如果他们真的必须是可选的。