使用 py2neo 从匹配查询中获取记录数

Get number of records from a match query with py2neo

有没有一种简单的方法可以使用 py2neo 从匹配查询中获取记录数 return?

records = g.db.run("MATCH (n:Project) where n.id={id} and ({user} in n.users) return n", id=project_id, user=user_name)
num_records_returned = # how do I do this?

您可以在 return 语句中使用 cypher

执行此操作
records = g.db.run("MATCH (n:Project) where n.id={id} and ({user} in n.users) return count(n)", id=project_id, user=user_name)

查询的结果 returns a python generator/iterator,因为它们毕竟不是集合,如果不迭代它就无法知道它的 size/length。

因此,如果您只对节点数感兴趣,您可以根据 Tomaz 所说的内容调整您的查询。

否则你可以使用计数器:

result = session.run("MATCH (n:Product) RETURN n")
n = 0

for record in result:
    print(record["n"]["id"])
    n = n+1

print("total number of records : " + str(n))

另一种解决方案是将迭代器转换为列表,然后您将可以使用 len 函数:

result = session.run("MATCH (n:Product) RETURN n")

records = list(result)
print(len(records))
for record in records:
    print(record["n"]["id"])

要在 Neo4j 中获取计数节点,使用 python 驱动程序,请使用以下命令:


结果=session.run("match (n) return count(*)")
总计 = result.single()[0]

字体: https://neo4j.com/docs/developer-manual/current/drivers/sessions-transactions/

“4.3.会话和事务”中的第 4 节