Neo4j 密码辅助,将两个可选匹配与一个匹配相结合
我在试着用一个密码Neo4j 密码辅助,将两个可选匹配与一个匹配相结合,neo4j,cypher,Neo4j,Cypher,我在试着用一个密码 OPTIONAL MATCH (a1:Article) WHERE a1.status='active' WITH collect(a1) as a1_col OPTIONAL MATCH (a2:Article) WHERE a2.category='xyz' WITH DISTINCT a1_col + collect(a2) as a MATCH (a)-[:author]->(u:User) WHERE NOT id(u)=101 RETURN a 我得到了类
OPTIONAL MATCH (a1:Article) WHERE a1.status='active'
WITH collect(a1) as a1_col
OPTIONAL MATCH (a2:Article) WHERE a2.category='xyz'
WITH DISTINCT a1_col + collect(a2) as a
MATCH (a)-[:author]->(u:User)
WHERE NOT id(u)=101
RETURN a
我得到了
类型不匹配:这个密码已经定义了一个冲突类型列表
错误,如果有任何帮助,我将不胜感激。我需要可选的匹配和匹配条款分开这里 变量a
是一个列表
,您可以在MATCH
子句中将其用作节点
您应该改用此查询:
OPTIONAL MATCH (a1:Article) WHERE a1.status='active'
WITH collect(a1) as a1_col
OPTIONAL MATCH (a2:Article) WHERE a2.category='xyz'
WITH DISTINCT a1_col + collect(a2) as a
MATCH (article)-[:author]->(u:User)
WHERE NOT id(u)=101 AND article IN a
RETURN a
我认为您可以像这样优化查询:
MATCH (u:User) WHERE id(u)=101 WITH u
MATCH (a:Article)
WHERE (a.category='xyz' OR a.status='active') AND
NOT (a)-[:author]->(u)
RETURN collect(DISTINCT a)
感谢@logisima,它可以正常工作,优化为
MATCH(article:article)
这个窗台匹配所有文章,有没有办法只匹配上面的a