我有一个节点,其中包含我需要的相关数据。该节点与多个节点有关系。我想返回节点,并将关系计数作为源数据的一部分。例如:
(:Person)-[:Traveled]->(:Country)
(John)-[:Traveled]->(USA)
->(Japan)
->(Spain)
普通英语:约翰前往美国,日本和西班牙
我想返回Person,使节点包含前往的国家/地区的数量:
{name:'John',..., numberOfCountriesTraveledTo: 3}
如何将count(:Country)的结果作为John中的字段附加?
更新
如果我和两个人(比如朋友)之间有关系怎么办?我需要它们之间的路径,包括Person节点,以便Person节点包括计数(Country)?这样:
(:Person)-[:Traveled]->(:Country)
(John)-[:Traveled]->(USA)
->(Japan)
->(Spain)
(Kate)-[:Traveled]->(Chile)
->(France)
f=(Kate)-[:Friends]-(John)
返回f会产生一个带有起始节点的路径,如
{name:'Kate',..., numberOfCountriesTraveledTo: 2}
和
之类的结束节点{name:'John',..., numberOfCountriesTraveledTo: 3}
我的目标是能够返回一条路径,其中包含与节点中国家/地区数量的关系。
答案 0 :(得分:3)
您可以在结果的用户投影中添加numberOfCountriesTraveledTo
作为附加属性。
MATCH (user:User {name: 'John'})-[:TRAVELED]->(country:Country)
RETURN user{.*, numberOfCountriesTraveledTo: count(country)}
更新 - 根据Op的要求添加第二个答案
MATCH (user:User {name: 'John'})<-[:FRIENDS]-(user2:User {name: 'Kate'})
RETURN user{.*, numberOfCountriesTraveledTo: size((user)-[:TRAVELED]->())},
user2{.*, numberOfCountriesTraveledTo: size((user2)-[:TRAVELED]->())}
路径上的n
朋友......
MATCH path=(:User {name: 'John'})<-[:FRIENDS*..10]-(:User {name: 'Kate'})
UNWIND nodes(path) as user
WITH user{.*, numberOfCountriesTraveledTo: size((user)-[:TRAVELED]->())} as user
RETURN collect(user) as users