刚从neo4j开始,我想我会用现实生活中的模型来自学。陷入以下
型号
(d:Destination)-[:Hosts]->(a:Accommodation)
:Accommodation is sub-typed with other labels as :Homestay / :Hotel / :Guesthouse etc.
查询
对于给定的d.name
,希望检索按其子类型分组的所有a.names
将感谢的帮助
这应该有效:
MATCH (d:Destination)-[:Hosts]-(a:Accomodation)
WHERE d.name = 'some name'
RETURN DISTINCT labels(a), collect(a.name)
如果要查询子类型,将它们放在节点属性中可能会更容易。
要对Martin Preusse的解决方案进行分层,您可以在临时步骤中筛选出Accommodation标签,并返回第零个元素。当然,这假设至少有两个标签(即确实存在子分类)。
match (d:Destination)-[:HOSTS]->(a:Accomodation)
with d
, a
, filter(type in labels(a) where type <> 'Accomodation')[0] as type
return d.name, type, collect(a.name)