理解 apoc.refactor.mergeNodes

问题描述

我正在使用 apoc.refactor.mergeNodes 来合并节点。 我有 886 个节点,其属性为患者 ID 和服务日期。所有服务日期均为同年12月。 我有以下代码

CALL apoc.refactor.mergeNodes(nodes,{properties: {
pat_id:'combine',date:'combine'},mergeRels:true})

合并节点有一个包含 886 个患者 ID 的列表,但它只有 31 个日期。似乎删除了日期的任何重复值。此函数的文档说“组合”将创建一个数组,但它似乎仅通过保留唯一值来作为集合运行。 我已经搜索了各种 apoc 函数,但找不到方法来做到这一点。我还尝试为所有 886 个节点创建一个属性,该属性一个地图(例如,date_map: {pat_id:date}),但似乎您不能将地图作为属性值。

有没有办法在组合节点中保留重复值?

解决方法

您能否提供数据库结构示例,并更好地解释您的最终目标?您实际上是在尝试从多个节点中创建一个节点,还是只是在尝试从 886 个节点中收集信息(类似这样:)

MATCH (node)
RETURN DISTINCT node.pat_id as ids,collect(node.date) as dates

最好将患者节点和日期节点分开,这样就可以轻松获取每个患者的所有日期节点列表(包括重复的)。