Neo4j 是否对与至少2个其他节点相关的一对节点进行密码查询?
我有一个问题,我需要找到一对相同节点类型都连接到的节点数 所以Neo4j 是否对与至少2个其他节点相关的一对节点进行密码查询?,neo4j,cypher,Neo4j,Cypher,我有一个问题,我需要找到一对相同节点类型都连接到的节点数 所以 (a1)-(b) (a2)-(b) (a1)-(c) (a2)——(c) 我想要的结果是: a1、a2、2 [我正在查看的节点对]并计算它们与多少其他音符相关 到目前为止,我有一个查询,它提供了我需要的节点,但我不知道如何形成一个“对”,然后在其他相关节点上搜索 添加示例: 创建 (a1:Node{name:'Alice'})-[:reference]->(b:Node{name:'movie1'}), (a2:节点{name:'B
(a1)-(b)
(a2)-(b)
(a1)-(c)
(a2)——(c) 我想要的结果是:
a1、a2、2
[我正在查看的节点对]并计算它们与多少其他音符相关 到目前为止,我有一个查询,它提供了我需要的节点,但我不知道如何形成一个“对”,然后在其他相关节点上搜索 添加示例:
创建
(a1:Node{name:'Alice'})-[:reference]->(b:Node{name:'movie1'}),
(a2:节点{name:'Bob'})-[:引用]->(b),
(a3:Node{name:'Charlie'})-[:reference]->(b),
(a3)-[:引用]->(d:Node{name:'movie3'}),
(a3)-[:引用]->(e:Node{name:'movie4'}),
(a1)-[:引用]->(c:Node{name:'movie2'}),
(a2)-[:引用]->(c) 我想提取的信息是一部电影中的哪一对演员,以及这对演员的电影数量。创建图表 为了便于进一步回答和解决问题,我注意到我的图表创建声明:
CREATE
(a1:Node {name: 'a1'})-[:REFERS]->(b:Node {name: 'b'}),
(a2:Node {name: 'a2'})-[:REFERS]->(b),
(a3:Node {name: 'a3'})-[:REFERS]->(b),
(a1)-[:REFERS]->(c:Node {name: 'c'}),
(a2)-[:REFERS]->(c);
解决方案
结果
创建图形
为了便于进一步回答和解决问题,我注意到我的图表创建声明:
CREATE
(a1:Node {name: 'a1'})-[:REFERS]->(b:Node {name: 'b'}),
(a2:Node {name: 'a2'})-[:REFERS]->(b),
(a3:Node {name: 'a3'})-[:REFERS]->(b),
(a1)-[:REFERS]->(c:Node {name: 'c'}),
(a2)-[:REFERS]->(c);
解决方案
结果
1.创建图形
根据附加信息和要求,我想向您推荐一个经过调整的图表,其中考虑了不同的角色<代码>演员代码>和<代码>电影代码>:
CREATE
(alice:Actor {name: 'Alice'})-[:REFERS]->(movie1:Movie {name: 'Movie 1'}),
(bob:Actor {name: 'Bob'})-[:REFERS]->(movie1),
(charlie:Actor {name: 'Charlie'})-[:REFERS]->(movie1),
(charlie)-[:REFERS]->(movie3:Movie {name: 'Movie 3'}),
(charlie)-[:REFERS]->(movie4:Movie {name: 'Movie 4'}),
(alice)-[:REFERS]->(movie2:Movie {name: 'Movie 2'}),
(bob)-[:REFERS]->(movie2);
2.实现
2.1要求一
“我想提取的信息是这对演员在一场比赛中的表现
一起看电影[…]
2.1.1解决方案
2.2要求二
“我想提取的信息是[…]一部
两位演员都参加了。”
2.2.1解决方案
[延期] 2.3要求A(来自评论) “'alice,bob':2'charlie,alice':1'charlie,bob'1(那些 有一个演员没关系“ 2.3.1解决方案 1.创建图形 根据附加信息和要求,我想向您推荐一个经过调整的图表,其中考虑了不同的角色<代码>演员代码>和<代码>电影代码>:
CREATE
(alice:Actor {name: 'Alice'})-[:REFERS]->(movie1:Movie {name: 'Movie 1'}),
(bob:Actor {name: 'Bob'})-[:REFERS]->(movie1),
(charlie:Actor {name: 'Charlie'})-[:REFERS]->(movie1),
(charlie)-[:REFERS]->(movie3:Movie {name: 'Movie 3'}),
(charlie)-[:REFERS]->(movie4:Movie {name: 'Movie 4'}),
(alice)-[:REFERS]->(movie2:Movie {name: 'Movie 2'}),
(bob)-[:REFERS]->(movie2);
2.实现
2.1要求一
“我想提取的信息是这对演员在一场比赛中的表现
一起看电影[…]
2.1.1解决方案
2.2要求二
“我想提取的信息是[…]一部
两位演员都参加了。”
2.2.1解决方案
[延期] 2.3要求A(来自评论) “'alice,bob':2'charlie,alice':1'charlie,bob'1(那些 有一个演员没关系“ 2.3.1解决方案
我要找的有点不同。以上基本上给出了每个节点的关系数。因此,如果有另一个节点'd'和'e'连接到'a3'-a3没有'pair',但上面的计数将显示为'3',我需要能够识别'c'->[a1,a2],'b'->[a1,a2]。其他节点都并没有2倍的a*节点要开发定制的适配解决方案,请详细说明在哪种情况下一对算为一对?您能否另外回答以下问题:仅由另外两个节点组成一对,或者是
b
,d
和e
也是a3
的有效对?添加了一个额外的答案。我要查找的是有点不同。以上基本上给出了每个节点的关系数。因此,如果有另一个节点'd'和'e'连接到'a3'-a3没有'pair',但上面的计数将显示为'3',我需要能够识别'c'->[a1,a2],'b'->[a1,a2]。其他节点都并没有2倍的a*节点要开发定制的适配解决方案,请详细说明在哪种情况下一对算为一对?您能否另外回答以下问题:仅由两个其他节点组成一对,或者是b
,d
和e
也是a3
的有效对?添加了一个额外的答案。这更接近我需要的,但是在上面的示例中,“Alice,Bob”这对已经出现在两部电影中(电影1和电影2)。我一直被这个问题困扰着。对于上面创建的图表,理想情况下您想要的结果是什么?'alice,bob':2,'charlie,alice':1,'charlie,bob'1(有一个演员的不重要)为答案添加了一个扩展。请参阅“2.3要求A”章节。正如您所说的。这更接近我需要的,但是在上面的示例中,“Alice,Bob”这对组合出现在两部电影中(电影1和电影2)。我一直被困在这一点上。对于上面创建的图形,您理想的结果是什么?'Alice,Bob':2,'charlie,Alice':1,'charlie,Bob'1(有一个演员的不重要)在答案中添加了一个扩展。请参阅“2.3要求A”章节。完全如您所述。
MATCH
(movie:Movie)<-[:REFERS]-(actor:Actor)
RETURN
movie.name AS movieName, collect(actor.name) AS actorTeam;
╒═══════════╤═════════════════════════╕
│"movieName"│"actorTeam" │
╞═══════════╪═════════════════════════╡
│"Movie 2" │["Alice","Bob"] │
├───────────┼─────────────────────────┤
│"Movie 1" │["Alice","Bob","Charlie"]│
├───────────┼─────────────────────────┤
│"Movie 4" │["Charlie"] │
├───────────┼─────────────────────────┤
│"Movie 3" │["Charlie"] │
└───────────┴─────────────────────────┘
MATCH
(movie:Movie)<-[:REFERS]-(actor:Actor)
WITH
movie.name AS movieName, collect(actor.name) AS actorTeam
RETURN
actorTeam, count(actorTeam) AS movieAmount;
╒═════════════════════════╤═════════════╕
│"actorTeam" │"movieAmount"│
╞═════════════════════════╪═════════════╡
│["Alice","Bob","Charlie"]│1 │
├─────────────────────────┼─────────────┤
│["Charlie"] │2 │
├─────────────────────────┼─────────────┤
│["Alice","Bob"] │1 │
└─────────────────────────┴─────────────┘
MATCH
(startActor:Actor)-[:REFERS]->(movie:Movie)<-[:REFERS]-(endActor:Actor)
WHERE
id(startActor) < id(endActor)
WITH
startActor.name AS startActorName, endActor.name AS endActorName, count(movie) AS movieAmount
RETURN
startActorName, endActorName, movieAmount;
╒════════════════╤══════════════╤═════════════╕
│"startActorName"│"endActorName"│"movieAmount"│
╞════════════════╪══════════════╪═════════════╡
│"Alice" │"Bob" │2 │
├────────────────┼──────────────┼─────────────┤
│"Alice" │"Charlie" │1 │
├────────────────┼──────────────┼─────────────┤
│"Bob" │"Charlie" │1 │
└────────────────┴──────────────┴─────────────┘