neo4j 2组之间的所有关系都具有一定深度

neo4j 2组之间的所有关系都具有一定深度,neo4j,cypher,Neo4j,Cypher,玩简单的neo4j查询。我的基本比赛是: MATCH (:Movie { id: '10' })-[*0..3]-(p:Producer) RETURN p.id 这会返回一些结果,所以显然电影-10和任何制作人之间都有一些关系。结果集的一部分是: 'producer_12' 'producer_18' 'producer_36' ......... 现在我想返回movie-10和制片人_12或制片人_18之间的所有关系,最多3跳。我修改了我的比赛 MATCH (:Movie { id: '

玩简单的neo4j查询。我的基本比赛是:

MATCH (:Movie { id: '10' })-[*0..3]-(p:Producer)
RETURN p.id
这会返回一些结果,所以显然电影-10和任何制作人之间都有一些关系。结果集的一部分是:

'producer_12'
'producer_18'
'producer_36'
.........
现在我想返回movie-10和制片人_12或制片人_18之间的所有关系,最多3跳。我修改了我的比赛

MATCH (:Movie { id: '10' })-[*0..3]-(p:Producer)
WHERE p.id IN ['producer_12', 'producer_18']
RETURN p.id
这已经没有返回任何值,而我希望生产者12和18会在答案中。此外,我找不到标记关系的方法。这是不可接受的。[r:*0..3]


我的最后一个查询必须是获取两套(电影10、12或15)和(制片人12或18)之间的所有关系。

我在这里模拟了您的场景

样本数据:

CREATE (movie:Movie {id : '10'})
CREATE (producer12:Producer {id:'producer_12'})
CREATE (producer18:Producer {id:'producer_18'})
CREATE (producer36:Producer {id:'producer_36'})
CREATE (movie)-[:PRODUCTED_BY]->(producer12)
CREATE (movie)-[:PRODUCTED_BY]->(producer18)
CREATE (movie)-[:PRODUCTED_BY]->(producer36)
查询:

MATCH (:Movie { id: '10' })-[*0..3]-(p:Producer)
WHERE p.id IN ['producer_12', 'producer_18']
RETURN p.id
结果是:

╒═════════════╕
│"p.id"       │
╞═════════════╡
│"producer_12"│
├─────────────┤
│"producer_18"│
└─────────────┘
可能
:Movie
节点的
id
属性不是
字符串
,而是
整数
。因此,请尝试将查询更改为:

MATCH (:Movie { id: 10 })-[*0..3]-(p:Producer)
WHERE p.id IN ['producer_12', 'producer_18']
RETURN p.id
即:将
'10'
更改为
10

此外,我找不到标记关系的方法。这不是 认可的。[r:*0..3]

这是因为您没有在关系中使用类型。
仅与类型一起使用(例如,
[r:SOME_type*0..3]
)。因此,删除
,方法是:
[r*0..3]

编辑:

从评论中:


关于最后一句话:它仍然有效,但它说“这 功能已弃用,将在将来的版本中删除。绑定 不推荐使用与可变长度模式中的列表的关系”– 用户732456 3小时前

不推荐使用与可变长度模式中的列表的绑定关系,因为

根据这一点,她提出了如下问题:

MATCH (n)-[rs*]-() RETURN rs
将生成警告,编写同一查询的规范方式为:

MATCH p=(n)-[*]-() RETURN relationships(p) AS rs

您使用的是哪个版本的neo4j?你还可以发布一些样本数据集和预期结果吗?谢谢
:Movie
id
属性真的是一个字符串吗?它真的是一个字符串。这是一个来自导入的id。我可以在一个简单的查询中匹配作者,比如match(m:Movie{id:'10'}),返回mSample数据将非常困难。数据库很大。我编辑了我的答案,请查看示例数据集。关于最后一句话:它仍在工作,但它说“此功能已弃用,将在未来版本中删除。不推荐使用可变长度模式的列表绑定关系”@user732456我编辑了我的答案,解释了它。请检查!我也发现了这一点:)顺便说一句,我发现我的查询有什么问题。这真是一根绳子。我的制作人的名字碰巧非常接近,我拼错了->一个名字,在我看来,3个节点之外的结果实际上是5个节点。因此,查询没有返回带有where子句的任何值。答案中的关系部分对我也很有帮助