使用Neo4j的密码:在collect中订购项目,并且不包含空对象

使用Neo4j的密码:在collect中订购项目,并且不包含空对象,neo4j,cypher,Neo4j,Cypher,我正在尝试编写一个密码查询,其中记录了一个人的多维数据集的所有时间。查询工作正常,但我看到的是,如果结果Time-[:RECORDED_ON]-Cube中没有任何关系,那么我将在collect中得到一条记录,两个值都为null。另外,我想在泰晤士报集合描述中订购日期 这是我的密码: MATCH(a:App{name:'AllAboutCubes'})<-[:MEMBER_OF]-(p:Cuber) WHERE id(p) = 1234 MATCH(p)<-[:BELONGS_TO {

我正在尝试编写一个密码查询,其中记录了一个人的多维数据集的所有时间。查询工作正常,但我看到的是,如果结果Time-[:RECORDED_ON]-Cube中没有任何关系,那么我将在collect中得到一条记录,两个值都为null。另外,我想在泰晤士报集合描述中订购日期

这是我的密码:

MATCH(a:App{name:'AllAboutCubes'})<-[:MEMBER_OF]-(p:Cuber) WHERE id(p) = 1234
MATCH(p)<-[:BELONGS_TO {is_active:1}]-(c:Cube)
OPTIONAL MATCH (c)-[:TYPE]->(ct:CubeType)
OPTIONAL MATCH (c)<-[:RECORDED_ON]-(t:Time)-[:RECORDED]-(p) 
WITH c,ct,COLLECT({time:t.time,date:t.date}) as times
RETURN c.name as name, c.manufacturer as manufacturer, ct.type as type, id(c) as cube_id, times as times
ORDER BY manufacturer ASC
我不想要[{time:null,date:null}]


有什么想法吗?谢谢,让我知道

这应该按降序对日期进行排序,如果没有日期,则返回[]:

MATCH (a:App{name:'AllAboutCubes'})<-[:MEMBER_OF]-(p:Cuber) WHERE id(p) = 1234
MATCH (p)<-[:BELONGS_TO {is_active:1}]-(c:Cube)
OPTIONAL MATCH (c)<-[:RECORDED_ON]-(t:Time)-[:RECORDED]-(p)
WITH c, t ORDER BY t.date DESC
OPTIONAL MATCH (c)-[:TYPE]->(ct:CubeType)
WITH c, ct, CASE WHEN t IS NULL THEN [] ELSE COLLECT({time:t.time,date:t.date}) END as times
RETURN c.name as name, c.manufacturer as manufacturer, ct.type as type, id(c) as cube_id, times
ORDER BY manufacturer
MATCH (a:App{name:'AllAboutCubes'})<-[:MEMBER_OF]-(p:Cuber) WHERE id(p) = 1234
MATCH (p)<-[:BELONGS_TO {is_active:1}]-(c:Cube)
OPTIONAL MATCH (c)<-[:RECORDED_ON]-(t:Time)-[:RECORDED]-(p)
WITH c, t ORDER BY t.date DESC
OPTIONAL MATCH (c)-[:TYPE]->(ct:CubeType)
WITH c, ct, CASE WHEN t IS NULL THEN [] ELSE COLLECT({time:t.time,date:t.date}) END as times
RETURN c.name as name, c.manufacturer as manufacturer, ct.type as type, id(c) as cube_id, times
ORDER BY manufacturer