我有第一个查询:
MATCH (U:User)-[S:Has|Shout]->(P:Post)
WHERE U.user_id=1
RETURN U.username, P.post
上面的查询将返回user_id = 1的所有结果,如:
U.username P.post
rioeduardo tomorrow
rioeduardo hurray
rioeduardo lala
rioeduardo hey
rioeduardo nice
rioeduardo testing
我有第二个查询:
MATCH (U:User)-[S:Shout]->(P:Post)<-[:Has]-(FU:User)
WHERE U.user_id=1
RETURN U.username, P.post
上面的查询将返回user_id = 1的所有结果,其他用户也会拥有它:
U.username P.post
rioeduardo tomorrow
rioeduardo hurray
rioeduardo lala
rioeduardo hey
不,我想从user_id = 1中删除结果而其他用户也拥有它,结果将是:
U.username P.post
rioeduardo nice
rioeduardo testing
我已经尝试过在Neo4j中使用谓词,但我什么也没得到。查询如下:
MATCH (U:User)-[S:Has|Shout]->(P:Post), filter=(U:User)-[:Shout]->(P:Post)<-[:Has]-(FU:User)
WHERE U.user_id=1 AND NONE (x IN nodes(filter) WHERE x.user_id = 1)
RETURN U.username, P.post
所以,请帮助我如何解决这个问题,如果你有其他方法,请告诉我(它不一定是谓词。) 感谢。
答案 0 :(得分:1)
尝试以下
MATCH (U:User)-[S:Has|Shout]->(P:Post)
WHERE U.user_id=1 AND NOT (U:User)-[:Shout]->(P:Post)<-[:Has]-(:User)
RETURN U.username, P.post