我正在使用Neo4j 3.4并且正在努力解决这个特定的查询
MATCH (u:User)-[:IS_A_MEMBER_OF]->(c:Church)
RETURN size([(p:Post)<-[:POSTED]-(:User)-[:IS_A_MEMBER_OF]->(c) WHERE NOT (u)-[:ACKNOWLEDGED|POSTED]->(p) | p])
此查询旨在获取用户尚未确认且未自行发布的给定教会的帖子数。换句话说,它应该检索教会成员的所有帖子,然后找出用户u
没有确认或发布的帖子并返回计数。
不幸的是,我无法弄清楚为什么Neo4j没有在where子句中进行检查。我缺少哪些关于模式理解的东西?因为所有用户返回的号码都是相同的,无论他们是否已经确认或发布了任何帖子。
谢谢!
答案 0 :(得分:0)
以下是一个工作示例,我使用count
代替size
,size
代表数组,此处有节点行,count
将聚合所有行结果。
MATCH (u:User)-[:IS_A_MEMBER_OF]->(c:Church),
(c)<-[:IS_A_MEMBER_OF]-(:User)-[:POSTED]->(p:Post)
WHERE NOT (u)-[:ACKNOWLEDGED|POSTED]->(p)
RETURN c, u, count(p)
每个教会和这个教会成员的回报,一些未被承认的帖子,不是由会员发布的。
答案 1 :(得分:0)
我提交了类似的错误报告。从3.3.6开始,这似乎是一个问题。