【发布时间】:2016-05-22 21:44:48
【问题描述】:
我在 neo4j 中创建了以下图表。这里 user1 已经和 user2 和 user3 交换了消息
(user1)-[:EMAIL_SENT]->(Email)-[:EMAIL_TO]->(user2)
(user1)<-[:EMAIL_TO]-(Email)<-[:EMAIL_SENT]-(user2)
(user1)-[:EMAIL_SENT]->(Email)-[:EMAIL_TO]->(user3)
(user1)<-[:REPLY_TO]-(Email)<-[:REPLY_SENT]-(user3)
(user1)-[:REPLY_SENT]->(Email)-[:REPLY_TO]->(user3)
我想检索用户 1 的 facebook 样式结果,即显示每个参与者的最新消息(发送或接收)。下面的查询显示了 user1 发送和接收的所有消息以及发送给哪个参与者,但我想汇总每个参与者的结果。
MATCH (U:User {username:'user1'})
-[L:EMAIL_SENT|EMAIL_TO]-(E:email)-[R:EMAIL_SENT|EMAIL_TO]-
(P:User)
WHERE type(L)<>type(R)
RETURN E.text as text,
E.subject as subject,
id(E) as message_id,
U.username as user,
P.username as participator,
(CASE type(L) WHEN 'EMAIL_SENT' THEN 'out' ELSE 'in' END) as direction
如果我尝试这样的事情
MATCH (U:User {username:'user1'})
-[L:EMAIL_SENT|EMAIL_TO]-(E:email)-[R:EMAIL_SENT|EMAIL_TO]-
(P:User)
WHERE type(L)<>type(R)
RETURN E.text as text,
E.subject as subject,
id(E) as message_id,
U.username as user,
P.username as participator,
(CASE type(L) WHEN 'EMAIL_SENT' THEN 'out' ELSE 'in' END) as direction ORDER BY E.timestamp DESC,collect (E.text)
我收到错误 - “如果前面的 RETURN(第 5 行,第 1 列(偏移量:187))中没有聚合表达式,则不能在 ORDER BY 中使用聚合,“RETURN E.text as text”,
另外,我不知道如何在使用收集检索所有电子邮件给特定参与者之前按时间戳排序后按参与者对所有电子邮件进行分组
【问题讨论】:
标签: neo4j