比方说,我们有一个数据库
(:TvShow)-[:contain]->(:Season)-[:contain]->(:Episode)

现在让我们说,一个人想要查询特定的 :TvShow 数据库并获得这样的结果:
{tvshow ://tvShow 节点//, seasons: [ {season://Season node//, episodes: [//episode node//]}]}

例如:如果我们有
OneShow 2 季 3 集

结果将是一个 json 对象:
{tvshow: OneShow, seasons: [{season: Season1, [episode1-1,episode1-2,episode1-3]},{season: Season1, [episode2-1,episode2-2,episode2-3]}]}

我正在尝试使用 WITH、collect、FOREACH 和数组运算符“+”,但尚未成功。

以前有人这样做过吗?

最佳答案

基于以下 Neo4j 控制台数据集 http://console.neo4j.org/r/7uru0d ,您可以通过以下方式实现:

MATCH (n:TvShow)-[:HAS_SEASON]->(season)-[:HAS_EPISODE]->(episode)
WITH n, season, collect(episode) AS ep
RETURN { show: n.id, seasons:collect({ season: season.name, episodes: ep })} AS shows

关于collections - neo4j 密码返回结构化映射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30326384/

10-12 02:09