【发布时间】:2021-12-02 14:12:04
【问题描述】:
我有 8000 个作者节点和 2000 个书籍节点。每个作者都有一个国家/地区属性,每本书可以由许多作者共同创作。
我试图通过将一个国家的所有作者分组到一个名为 Country 的单个虚拟节点中来显示哪些国家在书籍上进行了合作。然后,我需要根据 CountryA 的每位作者与 CountryB 的作者发表文章的次数来创建国家之间的虚拟关系。
我有一些查询正在做一些事情,但无法完全达到我想要的效果。这是我尝试过的方法和结果:
MATCH (a1:Author)-->(p:Paper)<--(a2:Author)
WHERE a1.country <> a2.country
WITH apoc.create.vNode(['Country'], {name: a1.country}) as Country1, apoc.create.vNode(['Country'], {name: a2.country}) as Country2, count(p) as numCollabs
RETURN DISTINCT Country1, Country2, apoc.create.vRelationship(Country1, 'COLLABORATED_WITH', {numCollabs: numCollabs}, Country2) LIMIT 25
这显示了许多重复的国家(我假设每个作者有 1 个而不是汇总作者),并且每个关系上的 numCollabs 始终为 1。
我也试过这个:
MATCH (a: Author)
WITH a.country as country, count(*) as count
RETURN apoc.create.vNode(['Country'], {name: country, authors: count}) as countries
这为我提供了正确的国家数量并显示了该国家/地区的作者数量...但是,我无法弄清楚如何创建 vRelationship,它将显示每个国家/地区与其他国家/地区合作的次数。
【问题讨论】: