Neo4j 在相册中查找多张照片

Neo4j 在相册中查找多张照片,neo4j,cypher,Neo4j,Cypher,我有相册和他们的照片存储在Neo4j中。我想能够找到一个相册,并得到一定数量的照片。目标是根据需要延迟加载照片(分页) 现在我可以做以下事情来实现我的目标: match(p:Photo)-[bt:BELONGS_TO]->(a:Album) where a.name = "Summer 2019" return a, collect(p)[..4] as photos 然而,我想能够排序的照片列表,如他们的上传日期或创建日期不同的标准。我不确定这是否是最好的方法 ma

我有相册和他们的照片存储在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"}]                                   │
└──────────────────────┴──────────────────────────────────────────────────────────────────────┘

在能够对照片进行排序的同时,是否有一种干净的方法获取此格式?

在收集
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

您确定要使用
[4..]
(而不是第一次查询中使用的
[..4]
)吗?奇怪的是,你想按
文件名
订购照片,但只从第五张开始得到结果。抓到了!我在发布这个问题时编辑了这个查询,所以它可能会以这种方式滑到那里。应已使用[…4]:-)复制并粘贴第一个查询