我有3种类型的节点'项目','用户''公司'这些相关如下:
(u : User)-[r:HAVE_DONATED{amount}]->(p : Project)
(c : Company)-[r:HAVE_DONATED{amount}]->(p : Project)
两个用户可以成为朋友,可以将其检查为
(u1 : User)-[:HAS_ACCOUNT]->()-[:FRIEND]-()<-[:HAS_ACCOUNT]-(u2 : User)
如果上述条件成立,那么两个用户就是朋友。
现在我必须找到我的朋友捐赠的所有项目以及捐赠和捐赠者数量。
Match (p : Project), (u1 : User {id : {id}}) with p, u1
Optional Match (p)<-[r:HAVE_DONATED]-(u2) with a, u1, u2, r
where (u1)-[:HAS_ACCOUNT]->()-[:FRIEND]-()<-[:HAS_ACCOUNT]-(u2)
with p, count(u2) as donors, sum(toInt(r.amount)) as donations
return {id : p.id, donor : donors, donation : donations} as project
此查询给了我正确的项目,但问题是捐赠者和捐赠不正确。在捐赠者和捐赠中,它只计算用户贡献(不包括用户和公司)。我想要用户和公司的联合捐赠。
答案 0 :(得分:0)
[EDITED]
要查找用户朋友捐赠的所有项目以及这些项目的捐赠总额,您可以使用此查询:
public class MyHybridWebViewRenderer : HybridWebViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<View> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || Element == null)
{
return;
}
(e.NewElement as MyHybridWebView).DoSomeNative += (sender, args) =>
{
//Do something
//Don't forget to unsubscribe in Dispose
};
}
}
如果标识为MATCH (u1:User {id : {id}})-[:HAS_ACCOUNT]->()-[:FRIEND]-()<-[:HAS_ACCOUNT]-(u2:User)-[:HAVE_DONATED]->(p:Project)
MATCH (donor)-[r:HAVE_DONATED]->(p)
WITH p, COUNT(donor) as donors, SUM(TOINT(r.amount)) AS donations
RETURN {id: p.id, donors: donors, donations:donations} AS project;
的用户没有为任何项目贡献的朋友,则查询不会返回任何内容。