せずに結果を取得します。私は取引IDと金額を関係で保存しています、それは良い習慣ですか?今私はユーザーが寄付をしたすべてのプロジェクトをフェッチするクエリを書く必要があります。結果にはprojectIdと一緒に次のプロパティも含める必要があります: {projectId、totalDonation(ユーザー+企業による寄付)、totalDonor(ユーザー+企業)、individualContribution(このプロジェクトでのユーザーの個別貢献、すべての寄付を集計します)、寄付時間(ユーザーが同じプロジェクトに対して複数回寄付した場合、最新のタイムスタンプを選択する必要があります)}}のNeo4jクエリは次のように私のDB内のノードがある重複
ユーザーまたは企業が1回だけ寄付することができるときに私はクエリを書いています。ユーザー/企業が複数回寄付したときに、私は重複プロジェクトを取得しています。
Match (u : User {id : {userId}})-[r:HAVE_DONATED]->(p : Project) with p,r
where p.status IN ["2", "3"] OPTIONAL MATCH (c)-[r2:HAVE_DONATED]->(p) WITH
p, COUNT(distinct(c)) as donors, SUM(TOINT(r2.amount)) AS donation,
r.createdTimeStamp as timestamp, TOINT(r.amount) as individualContribution
return distinct {totalDonation : donation, id : p.id, title : p.title,
totalDonors : donors, donationTimeStamp : timestamp , contribution :
individualContribution} as project order by project.donationTimeStamp desc
Aプロジェクトは、ユーザからの寄付を持つことができますが、オプションの試合であなただけの会社に一致しています。 – user3542450
OK、私の更新された回答を参照してください。 – cybersam
私のデータベースに3つのノードがあります。 (u1:User) - [:HAVE_DONATED {amount:100}] - >(p1:Project)、(u2:User) - [:HAVE_DONATED {amount:12332}] - >(p1:Project) ) - [:HAVE_DONATED {amount:12344}] - >(p1:プロジェクト)。彼または彼女が複数回寄付した後、このタイムスタンプに従ってソートした場合、最大タイムスタンプは一致するユーザーでなければなりません。私は正しい結果を得ていない。 http://postimg.org/image/3kyglgudd/このURLをご覧ください。 – user3542450