如何使用py2neo或cypher查询语言计算所有关系属性

时间:2015-06-02 08:01:33

标签: neo4j cypher py2neo

该模型用于记录所有浏览历史记录

我如何summation/average/find_max/find_min所有页面浏览到第2页

预期的答案是

  • 将所有浏览时间总计为page2:100 + 200 + 300 + 500
  • find_max浏览时间page2:500
  • find_min浏览时间page2:100
  • page1page2的平均浏览时间: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))

1 个答案:

答案 0 :(得分:1)

一个简单的例子,您需要适应以满足您的需求,在此处测试控制台:http://console.neo4j.org/?id=rs4ado

示例1:总结所有关键属性“时间”:

MATCH (p:Page { id:2 })<-[r:LINKS_TO]-(referer)
RETURN sum(r.time) AS totalTime

平均而言,将sum替换为avgminmax相同。

示例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