如何检查Neo4j数据库中是否存在周期;

时间:2018-09-23 03:20:11

标签: database graph neo4j cycle

尝试学习Neo4j,图形数据库并使用测试设置,在此我代表要交易水果的用户。

我正在尝试查找系统中存在“ 3人交易”或3个或更多人之间存在直接循环的情况。

这是我要存储的方案

userA有苹果,想要樱桃
userB有香蕉,想要苹果
userC有樱桃,要香蕉

因此,如果有3个参与方,则在上述情况下可以进行交易。我需要一个查询,该查询将返回商人/人员的姓名。

需要代表此帮助并编写代码以解决此查询。对于这种情况,这是我正在使用的密码:

  

(userA)-[r:has]->(苹果)(userA)-[r:wants]->(樱桃)

     

(userB)-[r:has]->(香蕉)(userB)-[r:wants]->(苹果)

     

(userA)-[r:has]->(樱桃)(userA)-[r:wants]->(香蕉)

也尝试使用此方法: find the group in Neo4j graph db,但该查询无效。.

感谢您提供的任何信息!

1 个答案:

答案 0 :(得分:0)

最初的方法是这样的:

MATCH (userA:User)
WHERE (userA)-[:WANTS]->() AND (userA)-[:HAS]->()
MATCH (userA)-[:WANTS]->()<-[:HAS]-(userB)-[:WANTS]->()<-[:HAS]-(userC)-[:WANTS]->()<-[:HAS]-(userA)
RETURN DISTINCT userA, userB, userC

也就是说,您可能需要根据图形的大小以及查询在图形上运行的速度来进行调整。