Neo4j cypher查询收集

Avi*_*Paz 2 match neo4j cypher

我有一个问题:

start brand=node(62) match  brand-[:CREATED_A]->(campaign:Campaign)<-->(node) 
return DISTINCT  brand,campaign,collect(node) ;
Run Code Online (Sandbox Code Playgroud)

现在结果几乎像我想的那样回来了.我缺少的一件事是我希望有以下层次结构:

品牌有很多广告系列和广告系列都有很多节点连接到它,因此广告系列中的节点类型.

现在,广告系列将多次返回到正在返回的每个广告系列.

was*_*ren 7

我提供了一个说明解决方案的Neo4j Gist.简而言之,它使用文字地图来格式化数据,并使用两个收集来确保品牌不会多次出现.

MATCH 
    (brand:Brand)-[:CREATED_A]->(campaign:Campaign)<-->(node)
WITH 
    brand, 
    { 
        campaign : campaign, 
        nodes : COLLECT(node)
    } AS campaigns
WITH 
    { 
        brand : brand, 
        campaigns : COLLECT(campaigns)
    } AS brands
RETURN brands
Run Code Online (Sandbox Code Playgroud)

这使得品牌出现一次,您可以获得一个很好的输出格式.