如何分组&使用Cypher按不同标签排序



刚从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)

最新更新