如何查询Neo4j内存虚拟图及相关会话可用性问题
关于APOC虚拟图的查询与会话可用性问题
1. 如何在directors虚拟图上运行Cypher查询?
你需要使用APOC的apoc.graph.run函数,指定目标虚拟图的名称来执行查询,具体有两种常见方式:
方式一:先创建虚拟图,再单独执行查询
首先通过apoc.graph.fromCypher创建名为directors的虚拟图:
CALL apoc.graph.fromCypher( 'MATCH (d:Director)-[:DIRECTED]->(m:Movie) RETURN d, m, DIRECTED', {}, {name: 'directors'} )
之后在同一会话中,调用apoc.graph.run指定图名执行查询:
CALL apoc.graph.run( 'MATCH (d:Director)-[:DIRECTED]->(m:Movie) WHERE m.year > 2000 RETURN d.name, m.title', 'directors' ) YIELD value RETURN value.d.name AS director, value.m.title AS movie
方式二:创建虚拟图后链式执行查询
可以在创建虚拟图的同一语句中直接链式调用查询,无需分开执行:
CALL apoc.graph.fromCypher( 'MATCH (d:Director)-[:DIRECTED]->(m:Movie) RETURN d, m, DIRECTED', {}, {name: 'directors'} ) CALL apoc.graph.run( 'MATCH (d)-[:DIRECTED]->(m) RETURN d.name, count(m) AS totalMovies', 'directors' ) YIELD value RETURN value.d.name, value.totalMovies
2. 该图在用户会话期间是否可用于多次查询?
是的,通过apoc.graph.fromCypher创建的虚拟图是绑定在当前用户会话中的。只要会话未关闭,你可以重复调用apoc.graph.run并指定directors这个图名,执行任意次数的查询。但当会话结束后,虚拟图会被自动销毁,下次会话需要重新创建才能使用。
内容的提问来源于stack exchange,提问作者py-r
相关产品推荐
相关产品推荐

