我有User
个节点,然后有一堆与其他节点的关系。
除了返回User
之外,我还需要一些关于某些关系的汇总数据,following
,followers
等。
目前,我分别返回User
和这些额外的属性,然后在我的应用程序中,我必须将额外的属性合并到我的用户对象中。
match (user:User {id:1234})
optional match ()<-[f:Follows]-user
with user, count(f) as following
optional match ()-[f:Follows]->user'
with user, following, count(f) as followers
return user, followers, following
结果是
user | following | follows
----------------------------------
User { | 10 | 30
id:1234, | |
name:foo | |
} | |
然后我会得到结果,并将following
,follows
混合到User
对象中。
然而,如果密码可以为我做这件事,那会更简单,更少的代码,所以它会返回一个用户&#39;对象...
user
----------------------------------
User {
id:1234,
name:foo,
following:10,
follows:30
}
但是,我不希望这些是针对用户资源保存的,只是在查找时计算出来。
知道这是否可行?我看了一下Collect,但我看不到在返回时将额外数据附加到现有资源的方法。
答案 0 :(得分:1)
Cypher可以返回任意属性映射:
match (user:User {id:1234})
optional match ()<-[f:Follows]-user
with user, count(f) as following
optional match ()-[f:Follows]->user
with user, following, count(f) as followers
return { id: user.id, name: user.name, following: following, followers: followers }
但是,如果你的用户携带很多属性,我不确定这是否方便。