Neo4j 有类似于“a”的东西吗;“边做边做”;匹配满足聚合值的模式?(财产等)

Neo4j 有类似于“a”的东西吗;“边做边做”;匹配满足聚合值的模式?(财产等),neo4j,cypher,Neo4j,Cypher,我不知道使用Cypher或图形遍历是否有意义,但我试图进行某种“最短路径”查询,但不是基于加权关系,而是基于聚合属性 假设我有标记为People的节点,它们都访问不同的主页,并且与homepage节点有访问关系。每个主页节点都有点击统计数据,这取决于其受欢迎程度。现在,我想将有访问关系的人与主页进行匹配,直到我达到最大曝光次数(点击次数) 为什么??因为我知道某一人群的“预期”暴露策略 差不多 Do MATCH (n:People)-[:VISITS]-(sites) while (reduc

我不知道使用Cypher或图形遍历是否有意义,但我试图进行某种“最短路径”查询,但不是基于加权关系,而是基于聚合属性

假设我有标记为People的节点,它们都访问不同的主页,并且与homepage节点有访问关系。每个主页节点都有点击统计数据,这取决于其受欢迎程度。现在,我想将有访问关系的人与主页进行匹配,直到我达到最大曝光次数(点击次数)

为什么??因为我知道某一人群的“预期”暴露策略

差不多

Do 
MATCH (n:People)-[:VISITS]-(sites)
while (reduce (x)<100000)
可以返回正确的聚合命中值(all),但我希望此函数运行每个匹配的模式,直到它满足一个值并返回匹配(当然,我错过了其他可能的页面和页面之间的混合,因为匹配不会遍历整个图形。但至少我在列表中找到了符合要求的页面的答案(如果有意义的话)


谢谢!

不确定如何进行聚合,但是有几个聚合函数(avg、sum等)。而且……您可以使用
with
子句将这些函数传递到cypher查询的第二部分

这就是说:Cypher还支持对结果进行排序(
orderby
),以及限制给定结果数量(
limit
)的功能。我不知道您会按什么进行排序,但…只是为了好玩,让我们随意对某些内容进行排序:

MATCH (n:People)-[v:VISITS]->(site:Site)
WHERE site.url= "http://somename.com"
RETURN n
ORDER BY v.VisitCount DESC
LIMIT 1000

对于访问给定站点的用户,这会将您的返回设置为1000人。

谢谢David,所有这些似乎都是有效的,谢谢您的示例。但是我希望Cypher回答的是:为访问站点的用户提供路径策略(列表)(第一个匹配表达式)因此,基于聚合的dailyhits节点属性,dailyhits达到1000/天。
MATCH (n:People)-[v:VISITS]->(site:Site)
WHERE site.url= "http://somename.com"
RETURN n
ORDER BY v.VisitCount DESC
LIMIT 1000