【发布时间】:2020-03-25 11:14:17
【问题描述】:
我是Neo4j 的新手,我正在尝试学习它以便为我的论文启动一个项目,我花了很多时间手动将大型数据集从 xml 重新组织为 csv,然后我导入了一个Neo4j 中的这个数据库的一部分,我会避免那些重复但我找不到合适的查询,你能帮我吗?
谢谢! 请告诉我您是否需要了解有关此数据库或其他内容的任何信息以更好地了解情况。
【问题讨论】:
我是Neo4j 的新手,我正在尝试学习它以便为我的论文启动一个项目,我花了很多时间手动将大型数据集从 xml 重新组织为 csv,然后我导入了一个Neo4j 中的这个数据库的一部分,我会避免那些重复但我找不到合适的查询,你能帮我吗?
谢谢! 请告诉我您是否需要了解有关此数据库或其他内容的任何信息以更好地了解情况。
【问题讨论】:
这是确保dedicateePersonId 列表具有不同值的一种方法:
MATCH (p:Person)
UNWIND p.dedicateePersonId AS id
WITH p, COLLECT(DISTINCT id) AS ids
SET p.dedicateePersonId = ids
[更新]
如果只有一个属性需要调整,但对于多个属性非常不合适(过于复杂和低效),上述方法就足够了。
这是一种更好的方法(使用函数apoc.create.setProperty 和apoc.coll.toSet)来更新任意数量的属性键的值。 keys 假定为 parameter,其中包含要更新的属性的名称。
MATCH (p:Person)
UNWIND $keys AS k
CALL apoc.create.setProperty(p, k, apoc.coll.toSet(p[k])) YIELD node
RETURN DISTINCT node
【讨论】: