Neo4j-获取Level2或Level3连接 [英] Neo4j - Get Level2 or Level3 connections

查看:117
本文介绍了Neo4j-获取Level2或Level3连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个小的连接结构,以更好地了解图形数据库的概念,并学习Neo4J

I'm developing a small connections structure to understand the concept of graph databases better, as well learn Neo4J

我的用户很少,他们之间的关系如下所示

I have few users and the relationship between them is KNOWS as follows

我有以下cqls在Neo4j中创建节点及其之间的关系.

I have the following cqls to create the nodes and relationships between then in Neo4j.

CREATE (user1:User {name:"User1",mail:"user1@test.com",mobile: 9000090001})
CREATE (user2:User {name:"User2",mail:"user2@test.com",mobile: 9000090002})
CREATE (user3:User {name:"User3",mail:"user3@test.com",mobile: 9000090003})
CREATE (user4:User {name:"User4",mail:"user4@test.com",mobile: 9000090004})
CREATE (user5:User {name:"User5",mail:"user5@test.com",mobile: 9000090005})
CREATE (user6:User {name:"User6",mail:"user6@test.com",mobile: 9000090006})
CREATE (user7:User {name:"User7",mail:"user7@test.com",mobile: 9000090007})
CREATE (user8:User {name:"User8",mail:"user8@test.com",mobile: 9000090008})
CREATE (user9:User {name:"User9",mail:"user9@test.com",mobile: 9000090009})

MATCH (user1:User), (user2:User) WHERE user1.mobile = 9000090001 AND user2.mobile = 9000090002 CREATE (user1)-[knows:KNOWS ]->(user2) RETURN user1, user2
MATCH (user1:User), (user2:User) WHERE user1.mobile = 9000090001 AND user2.mobile = 9000090003 CREATE (user1)-[knows:KNOWS ]->(user2) RETURN user1, user2
MATCH (user1:User), (user2:User) WHERE user1.mobile = 9000090002 AND user2.mobile = 9000090004 CREATE (user1)-[knows:KNOWS ]->(user2) RETURN user1, user2
MATCH (user1:User), (user2:User) WHERE user1.mobile = 9000090002 AND user2.mobile = 9000090005 CREATE (user1)-[knows:KNOWS ]->(user2) RETURN user1, user2
MATCH (user1:User), (user2:User) WHERE user1.mobile = 9000090003 AND user2.mobile = 9000090006 CREATE (user1)-[knows:KNOWS ]->(user2) RETURN user1, user2
MATCH (user1:User), (user2:User) WHERE user1.mobile = 9000090005 AND user2.mobile = 9000090007 CREATE (user1)-[knows:KNOWS ]->(user2) RETURN user1, user2
MATCH (user1:User), (user2:User) WHERE user1.mobile = 9000090005 AND user2.mobile = 9000090008 CREATE (user1)-[knows:KNOWS ]->(user2) RETURN user1, user2
MATCH (user1:User), (user2:User) WHERE user1.mobile = 9000090006 AND user2.mobile = 9000090009 CREATE (user1)-[knows:KNOWS ]->(user2) RETURN user1, user2

现在,我想为给定的用户获取 2级或3级连接.

Now I want to fetch level-2 or level-3 connections for the given user.

例如:

If I ask for level-2 connections for User1 then I should get User4, User5, User6
If I ask for level-3 connections for User1 then I should get User7, User8, User9

我有以下CQL

START levelGraph=node(1)
MATCH path=(user1:User)-[knows:KNOWS*1..]->(user2:User)
WHERE user1.mobile = 9000090001
RETURN user1, user2, length(path) as downlevel
ORDER BY length(path) asc

这给了我User1拥有的所有直接或间接连接.谁能指出我要实现此目标的cql

this one is giving me all the direct or indirect connections that User1 has. Can anyone point me what should be my cql to fulfill this

推荐答案

您可以修改

MATCH path=(user1:User)-[knows:KNOWS*1..]->(user2:User)

要获得第二级,应该像

MATCH path=(user1:User)-[knows:KNOWS*2..2]->(user2:User)

要获得第三级,应该是

 MATCH path=(user1:User)-[knows:KNOWS*3..3]->(user2:User)

这篇关于Neo4j-获取Level2或Level3连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆