一手房哪个网站做信息效果好,电子表格做网站框架,学计算机编程需要什么基础,免费网站建设排行在发布Neo4j 2.1时#xff0c;我们将具有UNWIND子句#xff0c;该子句使处理事物集合更加容易。 在我的有关创建邻接矩阵的博客文章中#xff0c;我们想要显示按字母顺序排列的前5个见面组中有多少人#xff0c;然后检查其他各组中有多少人。 没有UNWIND子句#xff0c;… 在发布Neo4j 2.1时我们将具有UNWIND子句该子句使处理事物集合更加容易。 在我的有关创建邻接矩阵的博客文章中我们想要显示按字母顺序排列的前5个见面组中有多少人然后检查其他各组中有多少人。 没有UNWIND子句我们必须这样做 MATCH (g:Group)
WITH g
ORDER BY g.name
LIMIT 5WITH COLLECT(id(g)) AS groupsMATCH (g1) WHERE id(g1) IN groups
MATCH (g2) WHERE id(g2) IN groupsOPTIONAL MATCH path (g1)-[:MEMBER_OF]-()-[:MEMBER_OF]-(g2)RETURN g1.name, g2.name, CASE WHEN path is null THEN 0 ELSE COUNT(path) END AS overlap 在这里我们获得了前5个组将其ID放入集合中然后通过背对背具有节点ID查找的MATCH来创建组的笛卡尔积。 如果不是在“组”中传递节点ID而是传递节点然后在MATCH步骤中使用节点ID那么我们将进行完整的节点扫描随着存储的增长它变得非常慢。 例如此版本将非常慢 MATCH (g:Group)
WITH g
ORDER BY g.name
LIMIT 5WITH COLLECT(g) AS groupsMATCH (g1) WHERE g1 IN groups
MATCH (g2) WHERE g2 IN groupsOPTIONAL MATCH path (g1)-[:MEMBER_OF]-()-[:MEMBER_OF]-(g2)RETURN g1.name, g2.name, CASE WHEN path is null THEN 0 ELSE COUNT(path) END AS overlap 这是原始查询的输出 -------------------------------------------------------------------------------------------------------------
| g1.name | g2.name | overlap |
-------------------------------------------------------------------------------------------------------------
| Big Data Developers in London | Big Data / Data Science / Data Analytics Jobs | 17 |
| Big Data Jobs in London | Big Data London | 190 |
| Big Data London | Big Data Developers in London | 244 |
| Cassandra London | Big Data / Data Science / Data Analytics Jobs | 16 |
| Big Data Jobs in London | Big Data Developers in London | 52 |
| Cassandra London | Cassandra London | 0 |
| Big Data London | Big Data / Data Science / Data Analytics Jobs | 36 |
| Big Data London | Cassandra London | 422 |
| Big Data Jobs in London | Big Data Jobs in London | 0 |
| Big Data / Data Science / Data Analytics Jobs | Big Data / Data Science / Data Analytics Jobs | 0 |
| Big Data Jobs in London | Cassandra London | 74 |
| Big Data Developers in London | Big Data London | 244 |
| Cassandra London | Big Data Jobs in London | 74 |
| Cassandra London | Big Data London | 422 |
| Big Data / Data Science / Data Analytics Jobs | Big Data London | 36 |
| Big Data Jobs in London | Big Data / Data Science / Data Analytics Jobs | 20 |
| Big Data Developers in London | Big Data Jobs in London | 52 |
| Cassandra London | Big Data Developers in London | 69 |
| Big Data / Data Science / Data Analytics Jobs | Big Data Jobs in London | 20 |
| Big Data Developers in London | Big Data Developers in London | 0 |
| Big Data Developers in London | Cassandra London | 69 |
| Big Data / Data Science / Data Analytics Jobs | Big Data Developers in London | 17 |
| Big Data London | Big Data Jobs in London | 190 |
| Big Data / Data Science / Data Analytics Jobs | Cassandra London | 16 |
| Big Data London | Big Data London | 0 |
-------------------------------------------------------------------------------------------------------------
25 rows 如果使用UNWIND则不再需要传递节点ID而是可以将节点收集到一个集合中然后将其分解为笛卡尔积 MATCH (g:Group)
WITH g
ORDER BY g.name
LIMIT 5WITH COLLECT(g) AS groupsUNWIND groups AS g1
UNWIND groups AS g2OPTIONAL MATCH path (g1)-[:MEMBER_OF]-()-[:MEMBER_OF]-(g2)RETURN g1.name, g2.name, CASE WHEN path is null THEN 0 ELSE COUNT(path) END AS overlap 没有明显更少的代码但是我认为使用UNWIND可以使查询的意图更加清晰。 我很期待看到一旦2.1是GAUNWIND员工就会发挥创新的作用。 翻译自: https://www.javacodegeeks.com/2014/06/neo4j-2-1-passing-around-node-ids-vs-unwind.html