Python Neo4j在单个查询中检索多个匹配查询的计数

时间:2018-02-06 05:49:01

标签: python-2.7 neo4j

我正在尝试获取用户拥有的链接数量,使用下面显示的查询和neo4j-driver for python。

with driver.session() as session:
    query = 'MATCH (n:User {userId: "1234"})-[r]-()  RETURN COUNT(r)'
    result = session.run(query)

问题是,由于我有很多用户ID,这需要花费很多时间。我是Neo4j的noobie。我只是想知道是否有办法通过单个查询检索多个用户ID的计数。我正在寻找类似的东西:

'MATCH (n:User {userId: "1234", "1235", "1236", ...})-\
[r1, r2, r3...]-()  RETURN COUNT(r1), COUNT(r2), COUNT(r3)...'

提前致谢。

2 个答案:

答案 0 :(得分:0)

我假设你想要所有用户的关系船计数

MATCH (n:User)-[r]-()  RETURN DISTINCT n.userId ,COUNT(r)
  • user1,10
  • user2,11
  • user3,10

或者如果您有特定用户的列表,那么您可以通过此

完成
MATCH (n:User)-[r]-()
WHERE n.userId in ["1234", "1235", "1236"]
RETURN DISTINCT n.userId , COUNT(r)

答案 1 :(得分:0)

您可以从节点获得关系程度,而无需支付实际扩展关系的成本。这是通过获取仅包含起始节点,关系类型和关系方向的模式的大小来完成的(尽管对于此示例,忽略方向)。

所以在这种情况下:

MATCH (n:User)
WHERE n.userId in ["1234", "1235", "1236"]
RETURN n.userId , size((n)-[r]-()) as degree