我在数据库中有作者和年份节点,它们之间有关系。我想使用apoc.text.decapitalize
将TotalPapers
变成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
任何关于为什么此方法不起作用的想法将不胜感激。
答案 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作为capitalizedProp
和year
parameters传递给此查询:
WITH apoc.text.decapitalize($capitalizedProp) as prop
MATCH (y:Year {year: $year})<-[r:IN]-(a:Author)
RETURN prop, COLLECT(r[prop]) as stats