gpt4 book ai didi

neo4j - 简单的递归 CYPHER 查询

转载 作者:行者123 更新时间:2023-12-04 01:29:02 24 4
gpt4 key购买 nike

这是一个非常简单的问题,但阅读 through the docs第一次,我不知道如何构造这个查询。假设我有一个如下所示的图表:

enter image description here

此外,每个人都有一个与他们相关的年龄。
什么 CYPHER 查询会让我得到约翰的年龄列表和约翰的整个 friend 树的所有年龄?

到目前为止我尝试过的:

MATCH (start)-[:friend]>(others)
WHERE start.name="John"
RETURN start.age, others.age

这有几个问题,
  • 它只是一对一的 friend 深入,我想去找约翰的所有 friend 。
  • 它不返回一个列表,而是一系列 (john.age, other.age) .
  • 最佳答案

    所以你需要的不仅仅是约翰的 friend ,还有 friend 的 friend 。所以你需要告诉neo4j递归地深入图中。

    此查询深入 2 级。

    MATCH (john:Person { name:"John" })-[:friend *1..2]->(friend: Person)
    RETURN friend.name, friend.age;

    n nevel 深,不要放任何东西,即 *1..
    哦,我也发现了这个 nice example在 Neo4j 中

    那么 *1..2有什么用这里的意思是:
    *表示它是一个递归。
    1表示不包括约翰本身,即是起始节点。如果你把 0 放在这里,它也会包括 John node本身。
    ..表示从这个节点到......
    2表示递归级别。在这里,您说要停在第 2 级。即不要超越史蒂夫。如果你什么都不放,它会一直运行,直到找不到“有” friend 关系的节点

    文档 这些类型的查询匹配是 here和类似的答案 here .

    关于neo4j - 简单的递归 CYPHER 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31079881/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com