我想知道这是否可行 . 我有一个查询生成一个很好的报告,显示两个实体之间通过另外两个节点的关系 . 可以有多个路径 . 我现在想要在这两个节点之间 Build 直接关系,并根据其间节点中的数据计算路径数和总和 . 报告查询如下 .
match (bo:BuyerAgency)<-[:IS_FOR_BO]-(sol:Solicitation)-[:SELECTED]->(prop:Proposal)<-[:OWNS_BID]-(so:VendorOrg)
where sol.currStatus='Awarded'
return bo.AgencyName, count(sol.Number) as awards, so.orgName, sum(prop.finalPrice) as awardVolume;
我想做的是类似于下面的,这是行不通的 .
match (bo:BuyerAgency)<-[:IS_FOR_BO]-(sol:Solicitation)-[:SELECTED]->(prop:Proposal)<-[:OWNS_BID]-(so:VendorOrg)
where sol.currStatus='Awarded'
create (bo)-[:HAS_AWARDED{awardCount: count(sol.Number), awardVolume: sum(prop.finalPrice)}]->(so);
如果我删除关系的属性,它可以工作但是想要添加属性而不需要太多的编程 .
我正在使用最新版本的Neo4j 3.2 .
谢谢
1 回答
这里的问题是你试图在无效的上下文中使用
count()
和sum()
函数 . 以下查询应该有效:此查询使用WITH将
bo
,so
以及聚合函数count(sol.Number)
和sum(prop.finalPrice)
的结果传递给下一个上下文 . 之后,这些值用于创建bo
和so
之间的新关系 .