如何使用 py2neo 或 cypher 查询语言计算所有关系属性
How do I calculate all the relationship properties with py2neo or cypher query language
该模型用于记录所有浏览历史
我怎么能summation/average/find_max/find_min
所有页面都浏览到第2页
预期的答案是
- 总计所有浏览时间为
page2
:100+200+300+500
- find_max 浏览时间
page2
: 500
- find_min 浏览时间
page2
: 100
- 从
page1
到 page2
的平均浏览时间:100
任何人都可以给我一些问题来实现上述问题。
cypher 查询语法对我来说真的很可怜。
创建节点和关系的代码
page1 = Node("Page", name="page1")
page2 = Node("Page", name="page2")
page3 = Node("Page", name="page3")
graph_db.create(neo4j.Path(page1, ("LINKS_TO", {"browsed_time": 200}), page2))
graph_db.create(neo4j.Path(page1, ("LINKS_TO", {"browsed_time": 100}), page2))
graph_db.create(neo4j.Path(page1, ("LINKS_TO", {"browsed_time": 300}), page2))
graph_db.create(neo4j.Path(page3, ("LINKS_TO", {"browsed_time": 500}), page2))
一个简单的示例,您需要进行调整以完全符合您的需求,在此处测试控制台:http://console.neo4j.org/?id=rs4ado
示例 1: 对键控的所有关系属性求和 "time":
MATCH (p:Page { id:2 })<-[r:LINKS_TO]-(referer)
RETURN sum(r.time) AS totalTime
对于平均值,将 sum
替换为 avg
,min
和 max
相同。
示例2:如果需要获取链接到Page2的页面节点,这里获取时间最多的,所以排序关系时间属性按降序排列
MATCH (p:Page { id:2 })
MATCH (p)<-[r:LINKS_TO]-(referer)
WITH r
ORDER BY r.time DESC
LIMIT 1
RETURN startNode(r), r.time
该模型用于记录所有浏览历史
我怎么能summation/average/find_max/find_min
所有页面都浏览到第2页
预期的答案是
- 总计所有浏览时间为
page2
:100+200+300+500 - find_max 浏览时间
page2
: 500 - find_min 浏览时间
page2
: 100 - 从
page1
到page2
的平均浏览时间:100
任何人都可以给我一些问题来实现上述问题。
cypher 查询语法对我来说真的很可怜。
创建节点和关系的代码
page1 = Node("Page", name="page1")
page2 = Node("Page", name="page2")
page3 = Node("Page", name="page3")
graph_db.create(neo4j.Path(page1, ("LINKS_TO", {"browsed_time": 200}), page2))
graph_db.create(neo4j.Path(page1, ("LINKS_TO", {"browsed_time": 100}), page2))
graph_db.create(neo4j.Path(page1, ("LINKS_TO", {"browsed_time": 300}), page2))
graph_db.create(neo4j.Path(page3, ("LINKS_TO", {"browsed_time": 500}), page2))
一个简单的示例,您需要进行调整以完全符合您的需求,在此处测试控制台:http://console.neo4j.org/?id=rs4ado
示例 1: 对键控的所有关系属性求和 "time":
MATCH (p:Page { id:2 })<-[r:LINKS_TO]-(referer)
RETURN sum(r.time) AS totalTime
对于平均值,将 sum
替换为 avg
,min
和 max
相同。
示例2:如果需要获取链接到Page2的页面节点,这里获取时间最多的,所以排序关系时间属性按降序排列
MATCH (p:Page { id:2 })
MATCH (p)<-[r:LINKS_TO]-(referer)
WITH r
ORDER BY r.time DESC
LIMIT 1
RETURN startNode(r), r.time