我有相册,他们的照片存储在Neo4j中。我希望能够找到一张专辑并获得一定数量的照片。目的是根据需要延迟加载照片(分页)。
现在我可以执行以下操作来实现我想要的功能:
match(p:Photo)-[bt:BELONGS_TO]->(a:Album) where a.name = "Summer 2019" return a, collect(p)[..4] as photos
但是,我希望能够通过不同的标准(例如上载日期或创建日期)对照片列表进行排序。我不确定这是否是最好的方法。
match(p:Photo)-[bt:BELONGS_TO]->(a:Album) where a.name = "Summer 2019" return a, collect(p)[4..] as photos order by p.file_name
失败,并告诉我以下内容:
在带有DISTINCT的WITH / RETURN或聚合中,无法访问在WITH / RETURN之前声明的变量:p
如果可能的话,我想保持结果的格式完全相同(一张专辑,一张照片),这样我就不必在应用程序代码中进行复杂的映射:
╒══════════════════════╤══════════════════════════════════════════════════════════════════════╕
│"a" │"photos" │
╞══════════════════════╪══════════════════════════════════════════════════════════════════════╡
│{"name":"Summer 2019"}│[{"file_name":"cat.jpeg"},{"file_name":"dog.jpeg"},{"file_name":"birdi│
│ │e.jpeg"},{"file_name":"bird.jpeg"}] │
└──────────────────────┴──────────────────────────────────────────────────────────────────────┘
是否有一种干净的方法可以在对照片进行排序的同时获取这种格式?
答案 0 :(得分:1)
在收集p
节点之前,您需要先进行订购
MATCH (p:Photo)-[bt:BELONGS_TO]->(a:Album)
WHERE a.name = "Summer 2019"
WITH
a,
p
ORDER BY p.file_name
RETURN a, collect(p)[4..] as photos