如何在Neo4j中的表中进行自引用?

如何在Neo4j中的表中进行自引用?,neo4j,cypher,graphql,Neo4j,Cypher,Graphql,我有几张用Neo4j装好的桌子。我已经阅读了一些教程,并提出了这个密码查询 MATCH (n:car_detail) RETURN COUNT(DISTINCT n.model_year), n.model, n.maker_name ORDER BY COUNT(DISTINCT n.model_year) desc 这个查询给了我所有继续使用或停止使用的汽车。逻辑被停止,任何更高的逻辑都被继续 我的桌上汽车有不同年份制造的汽车。我想建立一段关系,比如说 “奥迪A4 2011”-(:续)->

我有几张用Neo4j装好的桌子。我已经阅读了一些教程,并提出了这个密码查询

MATCH (n:car_detail)
RETURN COUNT(DISTINCT n.model_year), n.model, n.maker_name
ORDER BY COUNT(DISTINCT n.model_year) desc
这个查询给了我所有继续使用或停止使用的汽车。逻辑被停止,任何更高的逻辑都被继续

我的桌上汽车有不同年份制造的汽车。我想建立一段关系,比如说
“奥迪A4 2011”-(:续)->“奥迪A4 2015”-(:续)->“奥迪A4 2016”

您只需找到匹配的两辆车,然后连接它们:

e、 g


等等。

因此,听起来您希望与车型和品牌相匹配,按车型年升序订购,并在这些节点之间创建关系

我们可以利用它作为通过有序和收集的节点创建链表的快捷方式,您需要安装它(使用Neo4j版本的相应版本)以利用此功能,因为纯密码方法非常难看

查询将如下所示:

MATCH (n:car_detail)
WITH n
ORDER BY n.model_year
WITH collect(n) as cars, n.model as model, n.maker_name as maker
WHERE size(cars) > 1
CALL apoc.nodes.link(cars, 'CONTINUED')
RETURN cars

这里的关键是,在我们对节点进行排序之后,我们根据模型和生成器聚合节点,它们充当您的分组键(聚合时,非聚合变量成为聚合的分组键)。这意味着您订购的汽车将按品牌和型号进行分组,因此剩下的就是使用APOC创建链接列表中节点的关系。

谢谢,伙计,工作正常!但我有相同车型、制造商名称、车型年份的同一辆车,有多个不同的变型,变型不是延续。所以我得到了这样的结果。[{“车门数量”:“2”,“发动机马力”:“230”,“车型年份”:2013,“车型”:“1系列”,“城市mpg”:“19”,“id”:“2”,“制造商名称”:“BMW”,“发动机汽缸”:“6”,“高速公路mpg”:“28”,“驱动轮”:“后轮驱动”},{},“车门数量”:“2”,“发动机马力”:“320”,“车型年份”:2013,“车型”:“1系列”,“城市mpg”:“18”,“id”:“3”,“制造商名称”:“BMW”,“发动机汽缸”:“6”,“highway_mpg”:“25”,“driven_wheels”:“rear wheels drive”}]我可以使用SQL
{SQL}从汽车组中按车型选择车型,制造商名称,计数(不同车型年),制造商名称按计数顺序(不同车型年)
您的SQL表是否包含变量?我感觉您的节点包含的信息比SQL表中的信息更多,因此包含变量信息。图形中是否存在仅表示模型和make+年份的不同节点?请记住,您只能在节点之间创建关系,而不能创建某些属性的投影s个节点,因此如果您的所有:car\u detail节点都是变体,或包含变体,则您可能需要更改您的模型以获得所需的内容。我使用了制造商名称、模型和模型年份的不同组合,并创建了一个单独的节点来处理它,它工作正常。感谢您的初始查询。
MATCH (n:car_detail)
WITH n
ORDER BY n.model_year
WITH collect(n) as cars, n.model as model, n.maker_name as maker
WHERE size(cars) > 1
CALL apoc.nodes.link(cars, 'CONTINUED')
RETURN cars