neo4jで作成された次のグラフがあります。ここでuser1がuser2のとUSER3とメッセージを交換したORDER BYの使用方法とCypherクエリでの結果の集計方法
(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)
私はparticipatorごとに最新のメッセージを表示USER1すなわちのための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))「のテキストとしてRETURN E.text、」
はまた、私はどのように特定の参加者
にすべての電子メールを取得するために収集し使用する前にタイムスタンプでソート後の参加者によるグループのすべての電子メールをするかわかりません
text(email.text)などの電子メールのプロパティを返すことはできませんか? Userと同じU.username – jas
もちろん可能です。少し更新を見てください。 –
現在方向がnullとして表示されます。以前のクエリでは、REPLY_TOまたはREPLY_SENTまたはEMAIL_SENTまたはEMAIL_TOのように方向を示していました – jas