如何将节点 属性 转换为虚拟节点并生成 [虚拟] 关系?
How can I convert a node property into a virtual node and generate a [virtual] relationship?
我目前正在学习密码学,但正在努力弄清楚如何完成以下任务。
我的数据
我在 Neo4j 中有一组具有属性的节点。这些属性很少使用,因此拥有实际节点没有多大意义。我下面的示例是国家/地区节点列表,其中包含 属性 的名称和大陆。我们不经常使用大陆,但它仍然存在以供参考。
[
{
name: "Australia",
continent: "Oceania"
},
{
name: "Canada",
continent: "North America"
},
{
name: "New Zealand",
continent: "Oceania"
},
{
name: "United States",
continent: "North America"
}
]
我想要的
我们要生成的是每个大陆的虚拟节点 + 关系,这样我们就可以看到哪些国家属于哪些大陆。因此,每个大陆一个节点,每个国家一个节点,从一个大陆到内部国家有多种关系。
我有什么
到目前为止我所拥有的在下面 - 但它只是为我找到的每个大陆值提供了断开连接的大陆节点,而没有对它们进行分组。
Match (c:Country)
CALL apoc.create.vNode(['Continent'],{name:c.continent}) yield node as s
Return c, apoc.create.vRelationship(s,'HAS_COUNTRY',{},c), s
如何使用 cypher 查询以生成虚拟节点和关系以及特定节点上的组?
在您的查询中,每行生成一个大陆,因此生成了 4 个大陆,这就是为什么您会看到断开连接的大陆。
您需要将同一大陆的国家组合在一起,并只为它们创建大陆
MATCH (c:Country)
WITH c.continent AS continent, collect(c) AS countries
CALL apoc.create.vNode(['Continent'],{name: continent}) yield node AS s
UNWIND countries AS c
RETURN c, s, apoc.create.vRelationship(s,'HAS_COUNTRY',{},c)
我目前正在学习密码学,但正在努力弄清楚如何完成以下任务。
我的数据
我在 Neo4j 中有一组具有属性的节点。这些属性很少使用,因此拥有实际节点没有多大意义。我下面的示例是国家/地区节点列表,其中包含 属性 的名称和大陆。我们不经常使用大陆,但它仍然存在以供参考。
[
{
name: "Australia",
continent: "Oceania"
},
{
name: "Canada",
continent: "North America"
},
{
name: "New Zealand",
continent: "Oceania"
},
{
name: "United States",
continent: "North America"
}
]
我想要的
我们要生成的是每个大陆的虚拟节点 + 关系,这样我们就可以看到哪些国家属于哪些大陆。因此,每个大陆一个节点,每个国家一个节点,从一个大陆到内部国家有多种关系。
我有什么
到目前为止我所拥有的在下面 - 但它只是为我找到的每个大陆值提供了断开连接的大陆节点,而没有对它们进行分组。
Match (c:Country)
CALL apoc.create.vNode(['Continent'],{name:c.continent}) yield node as s
Return c, apoc.create.vRelationship(s,'HAS_COUNTRY',{},c), s
如何使用 cypher 查询以生成虚拟节点和关系以及特定节点上的组?
在您的查询中,每行生成一个大陆,因此生成了 4 个大陆,这就是为什么您会看到断开连接的大陆。
您需要将同一大陆的国家组合在一起,并只为它们创建大陆
MATCH (c:Country)
WITH c.continent AS continent, collect(c) AS countries
CALL apoc.create.vNode(['Continent'],{name: continent}) yield node AS s
UNWIND countries AS c
RETURN c, s, apoc.create.vRelationship(s,'HAS_COUNTRY',{},c)