比赛前对字符串进行大写

时间:2019-08-19 17:12:51

标签: neo4j cypher

我在数据库中有作者和年份节点,它们之间有关系。我想使用apoc.text.decapitalizeTotalPapers变成totalPapers

运行以下代码时,prop返回为字符串"totalPapers",但列表为空。但是,当我将collect(r.prop)替换为collect(r.totalPapers)时,一切似乎都正常。

MATCH (y:Year {year:2015})<-[r:IN]-(a:Author)
WITH r, apoc.text.decapitalize('TotalPapers') as prop
WITH r, prop, collect(r.prop) as stats
RETURN r, prop, stats 

任何关于为什么此方法不起作用的想法将不胜感激。

1 个答案:

答案 0 :(得分:1)

很难理解您要做什么,但是无论如何我都会提供答案,以防万一。

如果您要获取其名称与“ TotalPapers”(即“ totalPapers”)的大写字母匹配的IN关系属性(对于2015年创作的所有作品),则应该可以使用以下属性。 RETURN子句省略了r,因此它不用作aggregating function COLLECT的分组键,因为它总是会为您提供每个关系最多包含1个值的列表。

WITH apoc.text.decapitalize('TotalPapers') as prop
MATCH (y:Year {year: 2015})<-[r:IN]-(a:Author)
RETURN prop, COLLECT(r[prop]) as stats

实际上,最佳实践是将“ TotalPapers”和2015作为capitalizedPropyear parameters传递给此查询:

WITH apoc.text.decapitalize($capitalizedProp) as prop
MATCH (y:Year {year: $year})<-[r:IN]-(a:Author)
RETURN prop, COLLECT(r[prop]) as stats
相关问题