Files
reference/docs/neo4j.html
2024-05-09 11:07:37 +00:00

833 lines
149 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" data-color-mode="dark">
<head>
<meta charset="utf-8">
<title>Neo4j 备忘清单
&#x26; neo4j cheatsheet &#x26; Quick Reference</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta description="Neo4这个 neo4j 快速参考备忘单显示了它的常用命令
入门,为开发人员分享快速参考备忘单。">
<meta keywords="neo4j,reference,Quick,Reference,cheatsheet,cheat,sheet">
<link rel="icon" href="data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%221em%22%20width%3D%221em%22%3E%20%3Cpath%20d%3D%22m21.66%2010.44-.98%204.18c-.84%203.61-2.5%205.07-5.62%204.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2%201.17-2.42%203.16-3.07%206.5-2.28l1.67.39c4.19.98%205.47%203.05%204.49%207.23Z%22%20fill%3D%22%23c9d1d9%22%2F%3E%20%3Cpath%20d%3D%22M15.06%2019.39c-.62.42-1.4.77-2.35%201.08l-1.58.52c-3.97%201.28-6.06.21-7.35-3.76L2.5%2013.28c-1.28-3.97-.22-6.07%203.75-7.35l1.58-.52c.41-.13.8-.24%201.17-.31-.3.61-.54%201.35-.74%202.2l-.98%204.19c-.98%204.18.31%206.24%204.48%207.23l1.68.4c.58.14%201.12.23%201.62.27Zm2.43-8.88c-.06%200-.12-.01-.19-.02l-4.85-1.23a.75.75%200%200%201%20.37-1.45l4.85%201.23a.748.748%200%200%201-.18%201.47Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3Cpath%20d%3D%22M14.56%2013.89c-.06%200-.12-.01-.19-.02l-2.91-.74a.75.75%200%200%201%20.37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3C%2Fsvg%3E" type="image/svg+xml">
<link rel="stylesheet" href="../style/style.css">
<link rel="stylesheet" href="../style/katex.css">
</head>
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
<path d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="#c9d1d9"></path>
<path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#228e6c"></path>
<path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#228e6c"></path>
</svg>
<span class="title">Quick Reference</span></a><div class="menu"><a href="javascript:void(0);" class="searchbtn" id="searchbtn"><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><span>搜索</span><span>⌘K</span></a><a href="https://github.com/jaywcjlove/reference/blob/main/docs/neo4j.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><button id="darkMode" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="light" height="1em" width="1em">
<path d="M6.995 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007-2.246-5.007-5.007-5.007S6.995 9.239 6.995 12zM11 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2H2zm17 0h3v2h-3zM5.637 19.778l-1.414-1.414 2.121-2.121 1.414 1.414zM16.242 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.344 7.759 4.223 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" class="dark" height="1em" width="1em">
<path d="M12 11.807A9.002 9.002 0 0 1 10.049 2a9.942 9.942 0 0 0-5.12 2.735c-3.905 3.905-3.905 10.237 0 14.142 3.906 3.906 10.237 3.905 14.143 0a9.946 9.946 0 0 0 2.735-5.119A9.003 9.003 0 0 1 12 11.807z"></path>
</svg>
</button><script src="../js/dark.js?v=1.5.3"></script><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="wrap h1body-exist max-container"><header class="wrap-header h1wrap"><h1 id="neo4j-备忘清单"><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" fill="#4581C3" role="img" viewBox="0 0 24 24"><title>Neo4j</title><path d="M9.629 13.227c-.593 0-1.139.2-1.58.533l-2.892-1.976a2.61 2.61 0 0 0 .101-.711 2.633 2.633 0 0 0-2.629-2.629A2.632 2.632 0 0 0 0 11.073a2.632 2.632 0 0 0 2.629 2.629c.593 0 1.139-.2 1.579-.533L7.1 15.145c-.063.226-.1.465-.1.711 0 .247.037.484.1.711l-2.892 1.976a2.608 2.608 0 0 0-1.579-.533A2.632 2.632 0 0 0 0 20.639a2.632 2.632 0 0 0 2.629 2.629 2.632 2.632 0 0 0 2.629-2.629c0-.247-.037-.485-.101-.711l2.892-1.976c.441.333.987.533 1.58.533a2.633 2.633 0 0 0 2.629-2.629c0-1.45-1.18-2.629-2.629-2.629ZM16.112.732c-4.72 0-7.888 2.748-7.888 8.082v3.802a3.525 3.525 0 0 1 3.071.008v-3.81c0-3.459 1.907-5.237 4.817-5.237s4.817 1.778 4.817 5.237v8.309H24V8.814C24 3.448 20.832.732 16.112.732Z"></path></svg><a aria-hidden="true" tabindex="-1" href="#neo4j-备忘清单"><span class="icon icon-link"></span></a>Neo4j 备忘清单</h1><div class="wrap-body">
<p>这个 <a href="https://neo4j.com/docs/">neo4j</a> 快速参考备忘单显示了它的常用命令</p>
</div></header><div class="menu-tocs"><div class="menu-btn"><svg aria-hidden="true" fill="currentColor" height="1em" width="1em" viewBox="0 0 16 16" version="1.1" data-view-component="true">
<path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#入门">入门</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#neo4j">Neo4J</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#运行">运行</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#neo4j-使用">Neo4J 使用</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#进入管理页面">进入管理页面</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#图数据库概念">图数据库概念</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#neo4j-语法">Neo4j 语法</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#读取查询结构">读取查询结构</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#仅写入查询结构">仅写入查询结构</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#读取-写入查询结构">读取-写入查询结构</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#neo4j-读取数据">Neo4j 读取数据</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#match">MATCH</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#where">WHERE</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#return">RETURN</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#with">WITH</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#union">UNION</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#neo4j-写入数据">Neo4j 写入数据</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#create">CREATE</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#set">SET</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#merge">MERGE</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#delete">DELETE</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#remove">REMOVE</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#foreach">FOREACH</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#调用子查询">调用子查询</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#调用存储过程">调用存储过程</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#导入">导入</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#运算符">运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#null">null</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#patterns">Patterns</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#use">USE</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#show-functions-和-procedures">SHOW FUNCTIONS 和 PROCEDURES</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#标签">标签</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#lists">Lists</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#maps">Maps</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#case">CASE</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#predicates-谓词">Predicates 谓词</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#列表谓词">列表谓词</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#列表表达式">列表表达式</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#函数">函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#路径函数">路径函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#空间函数">空间函数</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#neo4j-示例">Neo4j 示例</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#创建">创建</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#删除">删除</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#查询">查询</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#创建节点和关系">创建节点和关系</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#增加修改节点的属性">增加/修改节点的属性</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#查询节点和关系">查询节点和关系</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#更新节点和关系">更新节点和关系</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#更复杂的查询">更复杂的查询</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#排序分页">排序&#x26;分页</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#聚合函数">聚合函数</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="入门"><a aria-hidden="true" tabindex="-1" href="#入门"><span class="icon icon-link"></span></a>入门</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-exist"><div class="wrap-header h3wrap"><h3 id="neo4j"><a aria-hidden="true" tabindex="-1" href="#neo4j"><span class="icon icon-link"></span></a>Neo4J</h3><div class="wrap-body">
<p>Neo4j是一个图形数据库由节点通过关系连接在一起。如果您有一个高度相互连接的数据集或者有很多连接的查询您可能会考虑使用图数据库。</p>
<ul>
<li><a href="https://neo4j.com/download">下载 Neo4j Desktop</a> <em>下载 Neo4j 桌面版或服务器版</em></li>
<li><a href="https://sandbox.neo4j.com">Neo4j 沙盒</a> <em>选择一个数据集 - 无需安装</em></li>
<li><a href="https://neo4j.com/aura">Neo4j Aura</a> <em>在云端获得免费的 Neo4j 实例</em></li>
<li><a href="https://neo4j.com/graphacademy">Neo4j 图形学院</a> <em>免费、自主学习、实践性的在线培训</em></li>
<li><a href="https://neo4j.com/graphgists">GraphGists</a> <em>使用案例和行业特定的示例图</em></li>
</ul>
<h4 id="运行"><a aria-hidden="true" tabindex="-1" href="#运行"><span class="icon icon-link"></span></a>运行</h4>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line">$ bin/neo4j start
</span></code></pre>
<p>在 Mac 或者 Linux 中,安装好 JDK 后,直接解压下载好的 Neo4j 包,然后运行上面命令即可。</p>
</div></div></div><div class="wrap h3body-exist"><div class="wrap-header h3wrap"><h3 id="neo4j-使用"><a aria-hidden="true" tabindex="-1" href="#neo4j-使用"><span class="icon icon-link"></span></a>Neo4J 使用</h3><div class="wrap-body">
<p>Neo4J 提供了一个用户友好的 web 界面可以进行各项配置、写入、查询等操作并且提供了可视化功能。类似ElasticSearch 一样,我个人非常喜欢这种开箱即用的设计。</p>
<h4 id="进入管理页面"><a aria-hidden="true" tabindex="-1" href="#进入管理页面"><span class="icon icon-link"></span></a>进入管理页面</h4>
<p>打开浏览器,输入下面网址,可以进入管理页面</p>
<pre class="language-url"><code class="language-url code-highlight"><span class="code-line"><span class="token scheme">http<span class="token scheme-delimiter">:</span></span><span class="token authority"><span class="token authority-delimiter">//</span><span class="token host"><span class="token ipv4-address">127.0.0.1</span></span><span class="token port-segment"><span class="token port-delimiter">:</span><span class="token port">7474</span></span></span><span class="token path"><span class="token path-separator">/</span>browser<span class="token path-separator">/</span></span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="图数据库概念"><a aria-hidden="true" tabindex="-1" href="#图数据库概念"><span class="icon icon-link"></span></a>图数据库概念</h3><div class="wrap-body">
<table class="style-list-arrow"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><code>节点</code></td><td>节点通常用于表示数据中的 <em>实体</em><em>事物</em>。例如,一个 <strong>Person</strong><strong>Movie电影</strong></td></tr><tr><td><code>关系</code></td><td>关系用于将两个节点连接在一起,并将数据组织成结构。例如,一个人 <strong>acted in出演</strong> 一部电影。关系有一个 <em>类型</em><em>方向</em>,尽管在查询时可以忽略方向。</td></tr><tr><td><code>标签</code></td><td>标签用于将节点分组到不同的类别中。例如,一个人可以有 <code>Person(人)</code><code>Actor(演员)</code> 标签。</td></tr><tr><td><code>关系类型</code></td><td>每个关系都有一个类型。关系允许您在图中探索较小的部分。</td></tr><tr><td><code>属性</code></td><td>节点和关系都可以设置属性。属性是 <a href="https://neo4j.com/docs/cypher-manual/4.3/syntax/values/#cypher-values">名称-值对</a></td></tr></tbody></table>
<!--rehype:className=style-list-arrow-->
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="neo4j-语法"><a aria-hidden="true" tabindex="-1" href="#neo4j-语法"><span class="icon icon-link"></span></a>Neo4j 语法</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="读取查询结构"><a aria-hidden="true" tabindex="-1" href="#读取查询结构"><span class="icon icon-link"></span></a>读取查询结构</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">[</span>USE<span class="token punctuation">]</span> <span class="token comment">// (使用)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">MATCH</span> <span class="token keyword">WHERE</span><span class="token punctuation">]</span> <span class="token comment">// (匹配条件)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">OPTIONAL</span> <span class="token keyword">MATCH</span> <span class="token keyword">WHERE</span><span class="token punctuation">]</span> <span class="token comment">// (可选匹配条件)</span>
</span><span class="code-line"><span class="token comment">// (传递结果并进行排序、跳过或限制)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">WITH</span> <span class="token punctuation">[</span><span class="token keyword">ORDER</span> <span class="token keyword">BY</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">SKIP</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">LIMIT</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
</span><span class="code-line"><span class="token comment">// (返回结果并进行排序、跳过或限制)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> <span class="token punctuation">[</span><span class="token keyword">ORDER</span> <span class="token keyword">BY</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">SKIP</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">LIMIT</span><span class="token punctuation">]</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="仅写入查询结构"><a aria-hidden="true" tabindex="-1" href="#仅写入查询结构"><span class="icon icon-link"></span></a>仅写入查询结构</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">[</span>USE<span class="token punctuation">]</span> <span class="token comment">// (使用)</span>
</span><span class="code-line"><span class="token punctuation">(</span><span class="token keyword">CREATE</span> <span class="token operator">|</span> <span class="token keyword">MERGE</span><span class="token punctuation">)</span><span class="token operator">*</span> <span class="token comment">// (创建或合并节点和关系)</span>
</span><span class="code-line"><span class="token comment">// (设置、删除、移除或循环操作)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">SET</span><span class="token operator">|</span><span class="token keyword">DELETE</span><span class="token operator">|</span><span class="token keyword">REMOVE</span><span class="token operator">|</span><span class="token keyword">FOREACH</span><span class="token punctuation">]</span><span class="token operator">*</span>
</span><span class="code-line"><span class="token comment">// (返回结果并进行排序、跳过或限制)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">RETURN</span> <span class="token punctuation">[</span><span class="token keyword">ORDER</span> <span class="token keyword">BY</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">SKIP</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">LIMIT</span><span class="token punctuation">]</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="读取-写入查询结构"><a aria-hidden="true" tabindex="-1" href="#读取-写入查询结构"><span class="icon icon-link"></span></a>读取-写入查询结构</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">[</span>USE<span class="token punctuation">]</span> <span class="token comment">// (使用)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">MATCH</span> <span class="token keyword">WHERE</span><span class="token punctuation">]</span> <span class="token comment">// (匹配条件)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">OPTIONAL</span> <span class="token keyword">MATCH</span> <span class="token keyword">WHERE</span><span class="token punctuation">]</span> <span class="token comment">// (可选匹配条件)</span>
</span><span class="code-line"><span class="token comment">// (传递结果并进行排序、跳过或限制)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">WITH</span> <span class="token punctuation">[</span><span class="token keyword">ORDER</span> <span class="token keyword">BY</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">SKIP</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">LIMIT</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
</span><span class="code-line"><span class="token punctuation">(</span><span class="token keyword">CREATE</span> <span class="token operator">|</span> <span class="token keyword">MERGE</span><span class="token punctuation">)</span><span class="token operator">*</span> <span class="token comment">// (创建或合并节点和关系)</span>
</span><span class="code-line"><span class="token comment">// (设置、删除、移除或循环操作)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">SET</span><span class="token operator">|</span><span class="token keyword">DELETE</span><span class="token operator">|</span><span class="token keyword">REMOVE</span><span class="token operator">|</span><span class="token keyword">FOREACH</span><span class="token punctuation">]</span><span class="token operator">*</span>
</span><span class="code-line"><span class="token comment">// (返回结果并进行排序、跳过或限制)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token keyword">RETURN</span> <span class="token punctuation">[</span><span class="token keyword">ORDER</span> <span class="token keyword">BY</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">SKIP</span><span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">LIMIT</span><span class="token punctuation">]</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="neo4j-读取数据"><a aria-hidden="true" tabindex="-1" href="#neo4j-读取数据"><span class="icon icon-link"></span></a>Neo4j 读取数据</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="match"><a aria-hidden="true" tabindex="-1" href="#match"><span class="icon icon-link"></span></a>MATCH</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">WHERE</span> n<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token string">'Alice'</span>
</span></code></pre>
<p>节点模式可以包含标签和属性</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>在 MATCH 中可以使用任何模式</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Alice'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>带有节点属性的模式</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> p <span class="token operator">=</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>将路径分配给 p</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">OPTIONAL</span> <span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r<span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>可选模式:缺失部分将使用空值</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="where"><a aria-hidden="true" tabindex="-1" href="#where"><span class="icon icon-link"></span></a>WHERE</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">WHERE</span> n<span class="token punctuation">.</span>property <span class="token operator">&#x3C;></span> <span class="token variable">$value</span>
</span></code></pre>
<p>使用谓词进行过滤。请注意WHERE 总是作为 MATCH、OPTIONAL MATCH 或 WITH 子句的一部分。在查询中的其他子句之后放置它将改变它的作用</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">WHERE</span> <span class="token keyword">EXISTS</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span> <span class="token keyword">WHERE</span> n<span class="token punctuation">.</span>age <span class="token operator">=</span> m<span class="token punctuation">.</span>age
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>使用存在性子查询进行过滤。</p>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="return"><a aria-hidden="true" tabindex="-1" href="#return"><span class="icon icon-link"></span></a>RETURN</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">RETURN</span> <span class="token operator">*</span>
</span></code></pre>
<p>返回所有变量的值</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">RETURN</span> n <span class="token keyword">AS</span> columnName
</span></code></pre>
<p>为结果列名使用别名</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">RETURN</span> <span class="token keyword">DISTINCT</span> n
</span></code></pre>
<p>返回唯一的行</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">ORDER</span> <span class="token keyword">BY</span> n<span class="token punctuation">.</span>property
</span></code></pre>
<p>对结果进行排序</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">ORDER</span> <span class="token keyword">BY</span> n<span class="token punctuation">.</span>property <span class="token keyword">DESC</span>
</span></code></pre>
<p>按降序对结果进行排序</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">SKIP</span> <span class="token variable">$skipNumber</span>
</span></code></pre>
<p>跳过一定数量的结果</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">LIMIT</span> <span class="token variable">$limitNumber</span>
</span></code></pre>
<p>限制结果的数量</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">SKIP</span> <span class="token variable">$skipNumber</span> <span class="token keyword">LIMIT</span> <span class="token variable">$limitNumber</span>
</span></code></pre>
<p>跳过顶部的结果并限制结果的数量</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">RETURN</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span>
</span></code></pre>
<p>匹配行的数量。参见聚合函数了解更多</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="with"><a aria-hidden="true" tabindex="-1" href="#with"><span class="icon icon-link"></span></a>WITH</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>user<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">FRIEND</span><span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span>friend<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">WHERE</span> user<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token variable">$name</span>
</span><span class="code-line"><span class="token keyword">WITH</span> user<span class="token punctuation">,</span> <span class="token function">count</span><span class="token punctuation">(</span>friend<span class="token punctuation">)</span> <span class="token keyword">AS</span> friends
</span><span class="code-line"><span class="token keyword">WHERE</span> friends <span class="token operator">></span> <span class="token number">10</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> user
</span></code></pre>
<p>WITH 语法类似于 RETURN。它明确地分隔查询部分允许您声明要传递到下一部分的变量</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>user<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">FRIEND</span><span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span>friend<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">WITH</span> user<span class="token punctuation">,</span> <span class="token function">count</span><span class="token punctuation">(</span>friend<span class="token punctuation">)</span> <span class="token keyword">AS</span> friends
</span><span class="code-line"><span class="token keyword">ORDER</span> <span class="token keyword">BY</span> friends <span class="token keyword">DESC</span>
</span><span class="code-line"> <span class="token keyword">SKIP</span> <span class="token number">1</span>
</span><span class="code-line"> <span class="token keyword">LIMIT</span> <span class="token number">3</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> user
</span></code></pre>
<p>ORDER BY、SKIP 和 LIMIT 也可以与 WITH 一起使用</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="union"><a aria-hidden="true" tabindex="-1" href="#union"><span class="icon icon-link"></span></a>UNION</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> b<span class="token punctuation">.</span>name
</span><span class="code-line"><span class="token keyword">UNION</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">LOVES</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> b<span class="token punctuation">.</span>name
</span></code></pre>
<p>返回所有查询结果的唯一并集。结果列的类型和名称必须匹配</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> b<span class="token punctuation">.</span>name
</span><span class="code-line"><span class="token keyword">UNION</span> <span class="token keyword">ALL</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">LOVES</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> b<span class="token punctuation">.</span>name
</span></code></pre>
<p>返回所有查询结果的并集,包括重复行</p>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="neo4j-写入数据"><a aria-hidden="true" tabindex="-1" href="#neo4j-写入数据"><span class="icon icon-link"></span></a>Neo4j 写入数据</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="create"><a aria-hidden="true" tabindex="-1" href="#create"><span class="icon icon-link"></span></a>CREATE</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>创建具有指定属性的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n <span class="token variable">$map</span><span class="token punctuation">)</span>
</span></code></pre>
<p>创建具有指定属性的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">UNWIND</span> <span class="token variable">$listOfMaps</span> <span class="token keyword">AS</span> properties
</span><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span> <span class="token keyword">SET</span> n <span class="token operator">=</span> properties
</span></code></pre>
<p>创建具有指定属性的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r<span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>创建具有指定类型和方向的关系;将变量绑定到它</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token class-name">LOVES</span> <span class="token punctuation">{</span>since<span class="token operator">:</span> <span class="token variable">$value</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>创建具有指定类型、方向和属性的关系</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="set"><a aria-hidden="true" tabindex="-1" href="#set"><span class="icon icon-link"></span></a>SET</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">SET</span> n<span class="token punctuation">.</span>property1 <span class="token operator">=</span> <span class="token variable">$value1</span><span class="token punctuation">,</span>
</span><span class="code-line"> n<span class="token punctuation">.</span>property2 <span class="token operator">=</span> <span class="token variable">$value2</span>
</span></code></pre>
<p>更新或创建属性</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">SET</span> n <span class="token operator">=</span> <span class="token variable">$map</span>
</span></code></pre>
<p>设置所有属性。这将删除任何现有属性</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">SET</span> n <span class="token operator">+</span><span class="token operator">=</span> <span class="token variable">$map</span>
</span></code></pre>
<p>添加和更新属性,同时保留现有属性</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">SET</span> n<span class="token operator">:</span>Person
</span></code></pre>
<p>向节点添加一个标签 Person</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="merge"><a aria-hidden="true" tabindex="-1" href="#merge"><span class="icon icon-link"></span></a>MERGE</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MERGE</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token keyword">ON</span> <span class="token keyword">CREATE</span> <span class="token keyword">SET</span> n<span class="token punctuation">.</span>created <span class="token operator">=</span> <span class="token function">timestamp</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token keyword">ON</span> <span class="token keyword">MATCH</span> <span class="token keyword">SET</span>
</span><span class="code-line"> n<span class="token punctuation">.</span>counter <span class="token operator">=</span> <span class="token function">coalesce</span><span class="token punctuation">(</span>n<span class="token punctuation">.</span>counter<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">,</span>
</span><span class="code-line"> n<span class="token punctuation">.</span>accessTime <span class="token operator">=</span> <span class="token function">timestamp</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span></code></pre>
<p>匹配模式或在不存在时创建它。使用 ON CREATE 和 ON MATCH 进行条件更新</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value1</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token punctuation">(</span>b<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value2</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">MERGE</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r<span class="token operator">:</span><span class="token relationship property">LOVES</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token punctuation">)</span>
</span></code></pre>
<p>MERGE 查找或创建节点之间的关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value1</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">MERGE</span>
</span><span class="code-line"> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r<span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value3</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>MERGE 查找或创建与节点关联的路径</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="delete"><a aria-hidden="true" tabindex="-1" href="#delete"><span class="icon icon-link"></span></a>DELETE</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">DELETE</span> n<span class="token punctuation">,</span> r
</span></code></pre>
<p>删除一个节点和一个关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">DETACH</span> <span class="token keyword">DELETE</span> n
</span></code></pre>
<p>删除一个节点以及与其连接的所有关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">DETACH</span> <span class="token keyword">DELETE</span> n
</span></code></pre>
<p>从数据库中删除所有节点和关系</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="remove"><a aria-hidden="true" tabindex="-1" href="#remove"><span class="icon icon-link"></span></a>REMOVE</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">REMOVE</span> n<span class="token operator">:</span>Person
</span></code></pre>
<p>从 n 中移除一个标签</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">REMOVE</span> n<span class="token punctuation">.</span>property
</span></code></pre>
<p>移除一个属性</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="foreach"><a aria-hidden="true" tabindex="-1" href="#foreach"><span class="icon icon-link"></span></a>FOREACH</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">FOREACH</span> <span class="token punctuation">(</span>r <span class="token keyword">IN</span> <span class="token function">relationships</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span> <span class="token operator">|</span>
</span><span class="code-line"> <span class="token keyword">SET</span> r<span class="token punctuation">.</span>marked <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">)</span>
</span></code></pre>
<p>对路径中的每个关系执行一个变异操作。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">FOREACH</span> <span class="token punctuation">(</span>value <span class="token keyword">IN</span> coll <span class="token operator">|</span>
</span><span class="code-line"> <span class="token keyword">CREATE</span> <span class="token punctuation">(</span><span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> value<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre>
<p>对列表中的每个元素执行一个变异操作。</p>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="调用子查询"><a aria-hidden="true" tabindex="-1" href="#调用子查询"><span class="icon icon-link"></span></a>调用子查询</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CALL</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">MATCH</span> <span class="token punctuation">(</span>p<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">FRIEND_OF</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>other<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span> <span class="token keyword">RETURN</span> p<span class="token punctuation">,</span> other
</span><span class="code-line"> <span class="token keyword">UNION</span>
</span><span class="code-line"> <span class="token keyword">MATCH</span> <span class="token punctuation">(</span>p<span class="token operator">:</span><span class="token class-name">Child</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">CHILD_OF</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>other<span class="token operator">:</span><span class="token class-name">Parent</span><span class="token punctuation">)</span> <span class="token keyword">RETURN</span> p<span class="token punctuation">,</span> other
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>这调用了一个具有两个联合部分的子查询。子查询的结果之后可以进行后处理。</p>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="调用存储过程"><a aria-hidden="true" tabindex="-1" href="#调用存储过程"><span class="icon icon-link"></span></a>调用存储过程</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CALL</span> db<span class="token punctuation">.</span><span class="token function">labels</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">YIELD</span> label
</span></code></pre>
<p>这显示了对内置过程 db.labels 的独立调用,以列出数据库中使用的所有标签。请注意,所需的过程参数在过程名称后的括号中明确给出。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CALL</span> db<span class="token punctuation">.</span><span class="token function">labels</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">YIELD</span> <span class="token operator">*</span>
</span></code></pre>
<p>独立调用可以使用 YIELD * 返回所有列。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CALL</span> java<span class="token punctuation">.</span>stored<span class="token punctuation">.</span>procedureWithArgs
</span></code></pre>
<p>独立调用可以省略 YIELD并且也可以通过语句参数隐式提供参数例如一个需要一个参数输入的独立调用可以通过传递参数映射 {input: 'foo'} 来运行。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CALL</span> db<span class="token punctuation">.</span><span class="token function">labels</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">YIELD</span> label
</span><span class="code-line"><span class="token keyword">RETURN</span> <span class="token function">count</span><span class="token punctuation">(</span>label<span class="token punctuation">)</span> <span class="token keyword">AS</span> count
</span></code></pre>
<p>在更大的查询中调用内置过程 db.labels 来计算数据库中使用的所有标签。在更大的查询中进行调用时,总是需要显式传递参数和使用 YIELD 明确命名结果。</p>
</div></div></div><div class="wrap h3body-not-exist col-span-2 row-span-3"><div class="wrap-header h3wrap"><h3 id="导入"><a aria-hidden="true" tabindex="-1" href="#导入"><span class="icon icon-link"></span></a>导入</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2 row-span-3-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">LOAD</span> <span class="token keyword">CSV</span> FROM
</span><span class="code-line"><span class="token string">'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists.csv'</span> <span class="token keyword">AS</span> line
</span><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span><span class="token operator">:</span><span class="token class-name">Artist</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> line<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> year<span class="token operator">:</span> <span class="token function">toInteger</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>从 CSV 文件加载数据并创建节点。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">LOAD</span> <span class="token keyword">CSV</span> <span class="token keyword">WITH</span> HEADERS FROM
</span><span class="code-line"><span class="token string">'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists-with-headers.csv'</span> <span class="token keyword">AS</span> line
</span><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span><span class="token operator">:</span><span class="token class-name">Artist</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> line<span class="token punctuation">.</span>Name<span class="token punctuation">,</span> year<span class="token operator">:</span> <span class="token function">toInteger</span><span class="token punctuation">(</span>line<span class="token punctuation">.</span>Year<span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>加载包含标题的 CSV 数据。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">USING</span> <span class="token keyword">PERIODIC</span> <span class="token keyword">COMMIT</span> <span class="token number">500</span>
</span><span class="code-line"><span class="token keyword">LOAD</span> <span class="token keyword">CSV</span> <span class="token keyword">WITH</span> HEADERS FROM
</span><span class="code-line"><span class="token string">'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists-with-headers.csv'</span> <span class="token keyword">AS</span> line
</span><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span><span class="token operator">:</span><span class="token class-name">Artist</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> line<span class="token punctuation">.</span>Name<span class="token punctuation">,</span> year<span class="token operator">:</span> <span class="token function">toInteger</span><span class="token punctuation">(</span>line<span class="token punctuation">.</span>Year<span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>在导入大量数据时每处理500行后提交当前事务。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">LOAD</span> <span class="token keyword">CSV</span> FROM
</span><span class="code-line"><span class="token string">'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists-fieldterminator.csv'</span>
</span><span class="code-line"><span class="token keyword">AS</span> line FIELDTERMINATOR <span class="token string">';'</span>
</span><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span><span class="token operator">:</span><span class="token class-name">Artist</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> line<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> year<span class="token operator">:</span> <span class="token function">toInteger</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>使用不同的字段分隔符,而不是默认的逗号(周围没有空白)。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">LOAD</span> <span class="token keyword">CSV</span> FROM
</span><span class="code-line"><span class="token string">'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists.csv'</span> <span class="token keyword">AS</span> line
</span><span class="code-line"><span class="token keyword">RETURN</span> <span class="token keyword">DISTINCT</span> <span class="token function">file</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回 LOAD CSV 处理的文件的绝对路径,如果在 LOAD CSV 上下文之外调用则返回 null。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">LOAD</span> <span class="token keyword">CSV</span> FROM
</span><span class="code-line"><span class="token string">'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists.csv'</span> <span class="token keyword">AS</span> line
</span><span class="code-line"><span class="token keyword">RETURN</span> <span class="token function">linenumber</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回 LOAD CSV 当前正在处理的行号,如果在 LOAD CSV 上下文之外调用则返回 null。</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="运算符"><a aria-hidden="true" tabindex="-1" href="#运算符"><span class="icon icon-link"></span></a>运算符</h3><div class="wrap-body">
<table class="left-align"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>通用</strong></td><td>DISTINCT, ., []</td></tr><tr><td><strong>数学</strong></td><td>+, -, *, /, %, ^</td></tr><tr><td><strong>比较</strong></td><td>=, &#x3C;>, &#x3C;, >, &#x3C;=, >=, IS NULL, IS NOT NULL</td></tr><tr><td><strong>布尔</strong></td><td>AND, OR, XOR, NOT</td></tr><tr><td><strong>字符串</strong></td><td>+</td></tr><tr><td><strong>列表</strong></td><td>+, IN, [x], [x .. y]</td></tr><tr><td><strong>正则表达式</strong></td><td>=~</td></tr><tr><td><strong>字符串匹配</strong></td><td>STARTS WITH, ENDS WITH, CONTAINS</td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="null"><a aria-hidden="true" tabindex="-1" href="#null"><span class="icon icon-link"></span></a>null</h3><div class="wrap-body">
<ul>
<li><code>null</code> 用于表示缺失/未定义的值。</li>
<li><code>null</code> 不等于 <code>null</code>。不知道两个值是否相等并不意味着它们是相同的值。因此,表达式 <code>null = null</code> 得到的是 <code>null</code> 而不是 <code>true</code>。要检查表达式是否为 <code>null</code>,请使用 <code>IS NULL</code></li>
<li>算术表达式、比较和函数调用(除了 <code>coalesce</code>)将返回 <code>null</code> 如果任何参数为 <code>null</code></li>
<li>尝试访问列表中缺失的元素或不存在的属性将得到 <code>null</code></li>
<li><code>OPTIONAL MATCH</code> 子句中,缺失部分的模式将使用 <code>null</code></li>
</ul>
</div></div></div><div class="wrap h3body-not-exist row-span-4"><div class="wrap-header h3wrap"><h3 id="patterns"><a aria-hidden="true" tabindex="-1" href="#patterns"><span class="icon icon-link"></span></a>Patterns</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-4-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span>
</span></code></pre>
<p>具有 Person 标签的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token operator">:</span><span class="token class-name">Swedish</span><span class="token punctuation">)</span>
</span></code></pre>
<p>具有 Person 和 Swedish 标签的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>具有声明的属性的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span></code></pre>
<p>匹配具有声明的属性的关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>从 n 到 m 的关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">--</span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>在 n 和 m 之间的任意方向上的关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>带有指向 m 的关系的标记为 Person 的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>m<span class="token punctuation">)</span><span class="token operator">&#x3C;-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span>
</span></code></pre>
<p>从 n 到 m 的类型为 KNOWS 的关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token operator">|</span><span class="token operator">:</span><span class="token relationship property">LOVES</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>从 n 到 m 的类型为 KNOWS 或类型为 LOVES 的关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r<span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>将关系绑定到变量 r</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">*</span><span class="token number">1</span><span class="token operator">..</span><span class="token number">5</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>从 n 到 m 之间的 1 到 5 个关系的变长路径</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">*</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>从 n 到 m 之间的任意数量的关系的变长路径。(请参阅性能部分)</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m <span class="token punctuation">{</span>property<span class="token operator">:</span> <span class="token variable">$value</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>从节点 n 到节点 m类型为 KNOWS 的关系,具有声明的属性</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">shortestPath</span><span class="token punctuation">(</span><span class="token punctuation">(</span>n1<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">*</span><span class="token operator">..</span><span class="token number">6</span><span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span>n2<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre>
<p>查找单一最短路径</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">allShortestPaths</span><span class="token punctuation">(</span><span class="token punctuation">(</span>n1<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">*</span><span class="token operator">..</span><span class="token number">6</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>n2<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre>
<p>查找所有最短路径</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre>
<p>计算与模式匹配的路径数量</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="use"><a aria-hidden="true" tabindex="-1" href="#use"><span class="icon icon-link"></span></a>USE</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">USE myDatabase
</span></code></pre>
<p>选择 myDatabase 来执行查询,或针对其执行查询的部分</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">USE neo4j
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">WHERE</span> n<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token string">'Alice'</span>
</span></code></pre>
<p>针对 Neo4j 数据库执行的 MATCH 查询</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="show-functions-和-procedures"><a aria-hidden="true" tabindex="-1" href="#show-functions-和-procedures"><span class="icon icon-link"></span></a>SHOW FUNCTIONS 和 PROCEDURES</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">SHOW FUNCTIONS
</span></code></pre>
<p>列出所有可用函数</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">SHOW PROCEDURES EXECUTABLE <span class="token keyword">YIELD</span> name
</span></code></pre>
<p>列出当前用户可以执行的所有过程,并仅返回过程的名称</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="标签"><a aria-hidden="true" tabindex="-1" href="#标签"><span class="icon icon-link"></span></a>标签</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>创建一个带有标签和属性的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MERGE</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$value</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>匹配或创建具有该标签和属性的唯一节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">SET</span> n<span class="token operator">:</span><span class="token class-name">Spouse</span><span class="token operator">:</span><span class="token class-name">Parent</span><span class="token operator">:</span>Employee
</span></code></pre>
<p>向节点添加标签</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span>
</span></code></pre>
<p>匹配标记为“Person”的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">WHERE</span> n<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token variable">$value</span>
</span><span class="code-line">
</span></code></pre>
<p>匹配具有给定名称的标记为“Person”的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">WHERE</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span>
</span></code></pre>
<p>检查节点上标签的存在</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">labels</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span>
</span></code></pre>
<p>节点的标签</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">REMOVE</span> n<span class="token operator">:</span>Person
</span></code></pre>
<p>从节点中移除标签</p>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="lists"><a aria-hidden="true" tabindex="-1" href="#lists"><span class="icon icon-link"></span></a>Lists</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">[</span><span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token string">'c'</span><span class="token punctuation">]</span> <span class="token keyword">AS</span> list
</span></code></pre>
<p>文字列表用方括号声明</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">size</span><span class="token punctuation">(</span><span class="token variable">$list</span><span class="token punctuation">)</span> <span class="token keyword">AS</span> len<span class="token punctuation">,</span> <span class="token variable">$list</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token keyword">AS</span> value
</span></code></pre>
<p>列表可以作为参数传递</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">range</span><span class="token punctuation">(</span><span class="token variable">$firstNum</span><span class="token punctuation">,</span> <span class="token variable">$lastNum</span><span class="token punctuation">,</span> <span class="token variable">$step</span><span class="token punctuation">)</span> <span class="token keyword">AS</span> list
</span></code></pre>
<p>range() 创建一个数字列表step是可选的其他返回列表的函数有labels()、nodes()、relationships()</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> p <span class="token operator">=</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token operator">*</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> <span class="token function">relationships</span><span class="token punctuation">(</span>p<span class="token punctuation">)</span> <span class="token keyword">AS</span> r
</span></code></pre>
<p>可以使用命名路径和 relationships() 返回变长路径的关系列表</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">RETURN</span> matchedNode<span class="token punctuation">.</span>list<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token keyword">AS</span> value<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token function">size</span><span class="token punctuation">(</span>matchedNode<span class="token punctuation">.</span>list<span class="token punctuation">)</span> <span class="token keyword">AS</span> len
</span></code></pre>
<p>属性可以是字符串、数字或布尔值的列表。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">list<span class="token punctuation">[</span><span class="token variable">$idx</span><span class="token punctuation">]</span> <span class="token keyword">AS</span> value<span class="token punctuation">,</span>
</span><span class="code-line">list<span class="token punctuation">[</span><span class="token variable">$startIdx</span><span class="token operator">..</span><span class="token variable">$endIdx</span><span class="token punctuation">]</span> <span class="token keyword">AS</span> slice
</span></code></pre>
<p>可以使用方括号中的 idx 下标来访问列表元素。无效的索引返回 null。可以使用起始索引到结束索引的间隔来检索片段每个索引都可以省略或为负数。超出范围的元素将被忽略</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">UNWIND</span> <span class="token variable">$names</span> <span class="token keyword">AS</span> name
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n <span class="token punctuation">{</span>name<span class="token operator">:</span> name<span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> <span class="token function">avg</span><span class="token punctuation">(</span>n<span class="token punctuation">.</span>age<span class="token punctuation">)</span>
</span></code></pre>
<p>使用 UNWIND任何列表都可以转换回单独的行。该示例匹配一个名字列表中的所有名字</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> <span class="token punctuation">[</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span>b<span class="token punctuation">)</span> <span class="token keyword">WHERE</span> b<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token string">'Bob'</span> <span class="token operator">|</span> b<span class="token punctuation">.</span>age<span class="token punctuation">]</span>
</span></code></pre>
<p>可以使用模式推导直接从匹配中进行自定义投影</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>person<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> person <span class="token punctuation">{</span> <span class="token punctuation">.</span>name<span class="token punctuation">,</span> <span class="token punctuation">.</span>age<span class="token punctuation">}</span>
</span></code></pre>
<p>映射投影可以很容易地从节点、关系和其他映射值构造出来</p>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="maps"><a aria-hidden="true" tabindex="-1" href="#maps"><span class="icon icon-link"></span></a>Maps</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Alice'</span><span class="token punctuation">,</span> age<span class="token operator">:</span> <span class="token number">38</span><span class="token punctuation">,</span> address<span class="token operator">:</span> <span class="token punctuation">{</span>
</span><span class="code-line"> city<span class="token operator">:</span> <span class="token string">'London'</span><span class="token punctuation">,</span>residential<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">}</span><span class="token punctuation">}</span>
</span></code></pre>
<p>文字映射使用大括号声明,就像属性映射一样。支持列表</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">WITH</span> <span class="token punctuation">{</span>person<span class="token operator">:</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Anne'</span><span class="token punctuation">,</span> age<span class="token operator">:</span> <span class="token number">25</span><span class="token punctuation">}</span><span class="token punctuation">}</span> <span class="token keyword">AS</span> p
</span><span class="code-line"><span class="token keyword">RETURN</span> p<span class="token punctuation">.</span>person<span class="token punctuation">.</span>name
</span></code></pre>
<p>访问嵌套映射的属性</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MERGE</span> <span class="token punctuation">(</span>p<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token variable">$map</span><span class="token punctuation">.</span>name<span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token keyword">ON</span> <span class="token keyword">CREATE</span> <span class="token keyword">SET</span> p <span class="token operator">=</span> <span class="token variable">$map</span>
</span></code></pre>
<p>映射可以作为参数传递,并且可以作为映射或通过访问键来使用</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>matchedNode<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> matchedNode
</span></code></pre>
<p>节点和关系被返回为它们数据的映射</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">map<span class="token punctuation">.</span>name<span class="token punctuation">,</span> map<span class="token punctuation">.</span>age<span class="token punctuation">,</span> map<span class="token punctuation">.</span>children<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>
</span></code></pre>
<p>可以通过它们的键访问映射条目。无效的键会导致错误</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="case"><a aria-hidden="true" tabindex="-1" href="#case"><span class="icon icon-link"></span></a>CASE</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CASE</span> n<span class="token punctuation">.</span>eyes
</span><span class="code-line"> <span class="token keyword">WHEN</span> <span class="token string">'blue'</span> <span class="token keyword">THEN</span> <span class="token number">1</span>
</span><span class="code-line"> <span class="token keyword">WHEN</span> <span class="token string">'brown'</span> <span class="token keyword">THEN</span> <span class="token number">2</span>
</span><span class="code-line"> <span class="token keyword">ELSE</span> <span class="token number">3</span>
</span><span class="code-line"><span class="token keyword">END</span>
</span></code></pre>
<p>从匹配的 WHEN 值返回 THEN 值。ELSE 值是可选的,如果缺失,则替换为 null</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CASE</span>
</span><span class="code-line"> <span class="token keyword">WHEN</span> n<span class="token punctuation">.</span>eyes <span class="token operator">=</span> <span class="token string">'blue'</span> <span class="token keyword">THEN</span> <span class="token number">1</span>
</span><span class="code-line"> <span class="token keyword">WHEN</span> n<span class="token punctuation">.</span>age <span class="token operator">&#x3C;</span> <span class="token number">40</span> <span class="token keyword">THEN</span> <span class="token number">2</span>
</span><span class="code-line"> <span class="token keyword">ELSE</span> <span class="token number">3</span>
</span><span class="code-line"><span class="token keyword">END</span>
</span></code></pre>
<p>从第一个评估为 true 的 WHEN 谓词返回 THEN 值。谓词按顺序进行评估</p>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="predicates-谓词"><a aria-hidden="true" tabindex="-1" href="#predicates-谓词"><span class="icon icon-link"></span></a>Predicates 谓词</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">n<span class="token punctuation">.</span>property <span class="token operator">&#x3C;></span> <span class="token variable">$value</span>
</span></code></pre>
<p>使用比较运算符</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">toString</span><span class="token punctuation">(</span>n<span class="token punctuation">.</span>property<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token variable">$value</span>
</span></code></pre>
<p>使用函数</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">n<span class="token punctuation">.</span>number <span class="token operator">>=</span> <span class="token number">1</span> <span class="token keyword">AND</span> n<span class="token punctuation">.</span>number <span class="token operator">&#x3C;=</span> <span class="token number">10</span>
</span></code></pre>
<p>使用布尔运算符来组合谓词</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token number">1</span> <span class="token operator">&#x3C;=</span> n<span class="token punctuation">.</span>number <span class="token operator">&#x3C;=</span> <span class="token number">10</span>
</span></code></pre>
<p>使用链接运算符来组合谓词</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">n<span class="token operator">:</span>Person
</span></code></pre>
<p>检查节点标签</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">variable <span class="token keyword">IS</span> <span class="token keyword">NOT</span> <span class="token boolean">NULL</span>
</span></code></pre>
<p>检查某物是否不为 null例如某个属性是否存在</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">n<span class="token punctuation">.</span>property <span class="token keyword">IS</span> <span class="token boolean">NULL</span> <span class="token keyword">OR</span> n<span class="token punctuation">.</span>property <span class="token operator">=</span> <span class="token variable">$value</span>
</span></code></pre>
<p>要么属性不存在,要么谓词为 true</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">n<span class="token punctuation">.</span>property <span class="token operator">=</span> <span class="token variable">$value</span>
</span></code></pre>
<p>不存在的属性返回 null它与任何值都不相等</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">n<span class="token punctuation">[</span><span class="token string">"property"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$value</span>
</span></code></pre>
<p>也可以使用动态计算的属性名称来访问属性</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">n<span class="token punctuation">.</span>property <span class="token keyword">STARTS</span> <span class="token keyword">WITH</span> <span class="token string">'Tim'</span> <span class="token keyword">OR</span>
</span><span class="code-line">n<span class="token punctuation">.</span>property <span class="token keyword">ENDS</span> <span class="token keyword">WITH</span> <span class="token string">'n'</span> <span class="token keyword">OR</span>
</span><span class="code-line">n<span class="token punctuation">.</span>property <span class="token keyword">CONTAINS</span> <span class="token string">'goodie'</span>
</span></code></pre>
<p>字符串匹配</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">n<span class="token punctuation">.</span>property <span class="token operator">=~</span> <span class="token string">'Tim.*'</span>
</span></code></pre>
<p>字符串正则表达式匹配</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>确保模式至少有一个匹配项</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">NOT</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">KNOWS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>m<span class="token punctuation">)</span>
</span></code></pre>
<p>从结果中排除对 (n)-[:KNOWS]->(m) 的匹配</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line">n<span class="token punctuation">.</span>property <span class="token keyword">IN</span> <span class="token punctuation">[</span><span class="token variable">$value1</span><span class="token punctuation">,</span> <span class="token variable">$value2</span><span class="token punctuation">]</span>
</span></code></pre>
<p>检查一个元素是否存在于列表中</p>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="列表谓词"><a aria-hidden="true" tabindex="-1" href="#列表谓词"><span class="icon icon-link"></span></a>列表谓词</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">all</span><span class="token punctuation">(</span>x <span class="token keyword">IN</span> coll <span class="token keyword">WHERE</span> x<span class="token punctuation">.</span>property <span class="token keyword">IS</span> <span class="token keyword">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">)</span>
</span></code></pre>
<p>如果列表中所有元素都满足谓词,则返回 true。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">any</span><span class="token punctuation">(</span>x <span class="token keyword">IN</span> coll <span class="token keyword">WHERE</span> x<span class="token punctuation">.</span>property <span class="token keyword">IS</span> <span class="token keyword">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">)</span>
</span></code></pre>
<p>如果列表中至少有一个元素满足谓词,则返回 true。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">none</span><span class="token punctuation">(</span>x <span class="token keyword">IN</span> coll <span class="token keyword">WHERE</span> x<span class="token punctuation">.</span>property <span class="token keyword">IS</span> <span class="token keyword">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">)</span>
</span></code></pre>
<p>如果列表中所有元素都不满足谓词,则返回 true。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">single</span><span class="token punctuation">(</span>x <span class="token keyword">IN</span> coll <span class="token keyword">WHERE</span> x<span class="token punctuation">.</span>property <span class="token keyword">IS</span> <span class="token keyword">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">)</span>
</span></code></pre>
<p>如果列表中恰好有一个元素满足谓词,则返回 true。</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="列表表达式"><a aria-hidden="true" tabindex="-1" href="#列表表达式"><span class="icon icon-link"></span></a>列表表达式</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">size</span><span class="token punctuation">(</span><span class="token variable">$list</span><span class="token punctuation">)</span>
</span></code></pre>
<p>列表中的元素数量</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">reverse</span><span class="token punctuation">(</span><span class="token variable">$list</span><span class="token punctuation">)</span>
</span></code></pre>
<p>反转列表中元素的顺序</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">head</span><span class="token punctuation">(</span><span class="token variable">$list</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">last</span><span class="token punctuation">(</span><span class="token variable">$list</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">tail</span><span class="token punctuation">(</span><span class="token variable">$list</span><span class="token punctuation">)</span>
</span></code></pre>
<p>head() 返回列表的第一个元素last() 返回列表的最后一个元素。tail() 返回除第一个元素外的所有元素。对于空列表,所有函数返回 null</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">[</span>x <span class="token keyword">IN</span> list <span class="token operator">|</span> x<span class="token punctuation">.</span>prop<span class="token punctuation">]</span>
</span></code></pre>
<p>对原始列表中每个元素的表达式值组成的列表</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">[</span>x <span class="token keyword">IN</span> list <span class="token keyword">WHERE</span> x<span class="token punctuation">.</span>prop <span class="token operator">&#x3C;></span> <span class="token variable">$value</span><span class="token punctuation">]</span>
</span></code></pre>
<p>过滤出谓词为 true 的元素组成的列表</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">[</span>x <span class="token keyword">IN</span> list <span class="token keyword">WHERE</span> x<span class="token punctuation">.</span>prop <span class="token operator">&#x3C;></span> <span class="token variable">$value</span> <span class="token operator">|</span> x<span class="token punctuation">.</span>prop<span class="token punctuation">]</span>
</span></code></pre>
<p>对列表进行过滤,并从每个符合条件的元素中提取表达式的值</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">reduce</span><span class="token punctuation">(</span>s <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">,</span> x <span class="token keyword">IN</span> list <span class="token operator">|</span> s <span class="token operator">+</span> x<span class="token punctuation">.</span>prop<span class="token punctuation">)</span>
</span></code></pre>
<p>对列表中的每个元素求值,并累积结果</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="函数"><a aria-hidden="true" tabindex="-1" href="#函数"><span class="icon icon-link"></span></a>函数</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">coalesce</span><span class="token punctuation">(</span>n<span class="token punctuation">.</span>property<span class="token punctuation">,</span> <span class="token variable">$defaultValue</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回第一个非空表达式</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">timestamp</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span></code></pre>
<p>自1970年1月1日UTC午夜以来的毫秒数</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">id</span><span class="token punctuation">(</span>nodeOrRelationship<span class="token punctuation">)</span>
</span></code></pre>
<p>关系或节点的内部ID</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">toInteger</span><span class="token punctuation">(</span><span class="token variable">$expr</span><span class="token punctuation">)</span>
</span></code></pre>
<p>将给定的输入转换为整数(如果可能),否则返回 null</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">toFloat</span><span class="token punctuation">(</span><span class="token variable">$expr</span><span class="token punctuation">)</span>
</span></code></pre>
<p>将给定的输入转换为浮点数(如果可能),否则返回 null</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">toBoolean</span><span class="token punctuation">(</span><span class="token variable">$expr</span><span class="token punctuation">)</span>
</span></code></pre>
<p>将给定的输入转换为布尔值(如果可能),否则返回 null</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">keys</span><span class="token punctuation">(</span><span class="token variable">$expr</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回节点、关系或映射的属性名称的字符串表示形式列表</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">properties</span><span class="token punctuation">(</span><span class="token variable">$expr</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回包含节点或关系的所有属性的映射</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="路径函数"><a aria-hidden="true" tabindex="-1" href="#路径函数"><span class="icon icon-link"></span></a>路径函数</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">length</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span>
</span></code></pre>
<p>路径中的关系数量。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">nodes</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span>
</span></code></pre>
<p>路径中的节点列表。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">relationships</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span>
</span></code></pre>
<p>路径中的关系列表。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token punctuation">[</span>x <span class="token keyword">IN</span> <span class="token function">nodes</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span> <span class="token operator">|</span> x<span class="token punctuation">.</span>prop<span class="token punctuation">]</span>
</span></code></pre>
<p>从路径中的节点中提取属性。</p>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="空间函数"><a aria-hidden="true" tabindex="-1" href="#空间函数"><span class="icon icon-link"></span></a>空间函数</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">point</span><span class="token punctuation">(</span><span class="token punctuation">{</span>x<span class="token operator">:</span> <span class="token variable">$x</span><span class="token punctuation">,</span> y<span class="token operator">:</span> <span class="token variable">$y</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回一个二维笛卡尔坐标系中的点。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">point</span><span class="token punctuation">(</span><span class="token punctuation">{</span>latitude<span class="token operator">:</span> <span class="token variable">$y</span><span class="token punctuation">,</span> longitude<span class="token operator">:</span> <span class="token variable">$x</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回一个二维地理坐标系中的点,坐标以十进制度数指定。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">point</span><span class="token punctuation">(</span><span class="token punctuation">{</span>x<span class="token operator">:</span> <span class="token variable">$x</span><span class="token punctuation">,</span> y<span class="token operator">:</span> <span class="token variable">$y</span><span class="token punctuation">,</span> z<span class="token operator">:</span> <span class="token variable">$z</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回一个三维笛卡尔坐标系中的点。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">point</span><span class="token punctuation">(</span><span class="token punctuation">{</span>latitude<span class="token operator">:</span> <span class="token variable">$y</span><span class="token punctuation">,</span> longitude<span class="token operator">:</span> <span class="token variable">$x</span><span class="token punctuation">,</span> height<span class="token operator">:</span> <span class="token variable">$z</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回一个三维地理坐标系中的点,纬度和经度以十进制度数表示,高度以米为单位。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">distance</span><span class="token punctuation">(</span><span class="token function">point</span><span class="token punctuation">(</span><span class="token punctuation">{</span>x<span class="token operator">:</span> <span class="token variable">$x1</span><span class="token punctuation">,</span> y<span class="token operator">:</span> <span class="token variable">$y1</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">point</span><span class="token punctuation">(</span><span class="token punctuation">{</span>x<span class="token operator">:</span> <span class="token variable">$x2</span><span class="token punctuation">,</span> y<span class="token operator">:</span> <span class="token variable">$y2</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回一个浮点数,表示两点之间的线性距离。返回的单位将与点坐标的单位相同,它适用于二维和三维笛卡尔点。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token function">distance</span><span class="token punctuation">(</span><span class="token function">point</span><span class="token punctuation">(</span><span class="token punctuation">{</span>latitude<span class="token operator">:</span> <span class="token variable">$y1</span><span class="token punctuation">,</span> longitude<span class="token operator">:</span> <span class="token variable">$x1</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">point</span><span class="token punctuation">(</span><span class="token punctuation">{</span>latitude<span class="token operator">:</span> <span class="token variable">$y2</span><span class="token punctuation">,</span> longitude<span class="token operator">:</span> <span class="token variable">$x2</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre>
<p>返回两点之间的大地距离,单位为米。它也可以用于三维地理点。</p>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="neo4j-示例"><a aria-hidden="true" tabindex="-1" href="#neo4j-示例"><span class="icon icon-link"></span></a>Neo4j 示例</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="创建"><a aria-hidden="true" tabindex="-1" href="#创建"><span class="icon icon-link"></span></a>创建</h3><div class="wrap-body">
<p>创建多个节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Sally'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">RETURN</span> n<span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Steve'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">RETURN</span> n<span class="token punctuation">;</span>
</span></code></pre>
<p>创建 <code>FRIENDS</code> 关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Sally'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token punctuation">(</span>b<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Steve'</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">MERGE</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">FRIENDS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token punctuation">)</span>
</span></code></pre>
<p>创建节点的时候就建好 <code>FRIENDS</code> 关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Todd'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r<span class="token operator">:</span><span class="token relationship property">FRIENDS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Carlos'</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></code></pre>
<p>为创建完成的关系增加 <code>since</code> 属性</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Sally'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token punctuation">(</span>b<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Steve'</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">MERGE</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token class-name">FRIENDS</span> <span class="token punctuation">{</span>since<span class="token operator">:</span><span class="token number">2001</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token punctuation">)</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="删除"><a aria-hidden="true" tabindex="-1" href="#删除"><span class="icon icon-link"></span></a>删除</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<p>删除所有节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span> <span class="token keyword">DETACH</span> <span class="token keyword">DELETE</span> n
</span></code></pre>
<p>删除 <code>Person</code><code>name</code><code>Mike</code>节点的 <code>test</code>属性</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Mike'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">SET</span> a<span class="token punctuation">.</span>test<span class="token operator">=</span><span class="token string">'test'</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Mike'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">REMOVE</span> a<span class="token punctuation">.</span>test
</span></code></pre>
<p>删除 <code>Location</code><code>city</code><code>Portland</code> 的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Location</span> <span class="token punctuation">{</span>city<span class="token operator">:</span><span class="token string">'Portland'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">DELETE</span> a
</span></code></pre>
<p>删除有关系的节点此处rel是写死的指的是所有关系</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Todd'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>rel<span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span>b<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span> <span class="token keyword">DELETE</span> a<span class="token punctuation">,</span>b<span class="token punctuation">,</span>rel
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-3"><div class="wrap-header h3wrap"><h3 id="查询"><a aria-hidden="true" tabindex="-1" href="#查询"><span class="icon icon-link"></span></a>查询</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-3-->
<p>查询所有在 <code>Boston</code> 出生的人物</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">BORN_IN</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>b<span class="token operator">:</span><span class="token class-name">Location</span> <span class="token punctuation">{</span>city<span class="token operator">:</span><span class="token string">'Boston'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">RETURN</span> a<span class="token punctuation">,</span>b
</span></code></pre>
<p>查询所有对外有关系的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">--></span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">RETURN</span> a
</span></code></pre>
<p>查询所有有关系的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">--</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">RETURN</span> a
</span></code></pre>
<p>查询所有对外有关系的节点,以及关系类型</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r<span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">RETURN</span> a<span class="token punctuation">.</span>name<span class="token punctuation">,</span> <span class="token function">type</span><span class="token punctuation">(</span>r<span class="token punctuation">)</span>
</span></code></pre>
<p>查询所有有结婚关系的节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">MARRIED</span><span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">RETURN</span> n
</span></code></pre>
<p>查找某人的朋友的朋友</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Mike'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r1<span class="token operator">:</span><span class="token relationship property">FRIENDS</span><span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r2<span class="token operator">:</span><span class="token relationship property">FRIENDS</span><span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span>friend_of_a_friend<span class="token punctuation">)</span> <span class="token keyword">RETURN</span> friend_of_a_friend<span class="token punctuation">.</span>name <span class="token keyword">AS</span> fofName
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="创建节点和关系"><a aria-hidden="true" tabindex="-1" href="#创建节点和关系"><span class="icon icon-link"></span></a>创建节点和关系</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token comment">// 创建节点</span>
</span><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Alice'</span><span class="token punctuation">,</span> age<span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Bob'</span><span class="token punctuation">,</span> age<span class="token operator">:</span> <span class="token number">25</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 创建关系</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>alice<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Alice'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>bob<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Bob'</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>alice<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">FRIENDS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>bob<span class="token punctuation">)</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="增加修改节点的属性"><a aria-hidden="true" tabindex="-1" href="#增加修改节点的属性"><span class="icon icon-link"></span></a>增加/修改节点的属性</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Liz'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">SET</span> a<span class="token punctuation">.</span>age<span class="token operator">=</span><span class="token number">34</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Shaw'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">SET</span> a<span class="token punctuation">.</span>age<span class="token operator">=</span><span class="token number">32</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'John'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">SET</span> a<span class="token punctuation">.</span>age<span class="token operator">=</span><span class="token number">44</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>a<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span><span class="token string">'Mike'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">SET</span> a<span class="token punctuation">.</span>age<span class="token operator">=</span><span class="token number">25</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="查询节点和关系"><a aria-hidden="true" tabindex="-1" href="#查询节点和关系"><span class="icon icon-link"></span></a>查询节点和关系</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token comment">// 查询所有节点和关系</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> n
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 查询特定节点</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">WHERE</span> n<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token string">'Alice'</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> n
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 查询节点的关系</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>r<span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">WHERE</span> n<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token string">'Alice'</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> r
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="更新节点和关系"><a aria-hidden="true" tabindex="-1" href="#更新节点和关系"><span class="icon icon-link"></span></a>更新节点和关系</h3><div class="wrap-body">
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token comment">// 更新节点属性</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Alice'</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">SET</span> n<span class="token punctuation">.</span>age <span class="token operator">=</span> <span class="token number">31</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> n
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 删除节点</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>n<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Bob'</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">DELETE</span> n
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3 id="更复杂的查询"><a aria-hidden="true" tabindex="-1" href="#更复杂的查询"><span class="icon icon-link"></span></a>更复杂的查询</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2 row-span-2-->
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token comment">// 查找 Alice 的朋友的朋友</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>alice<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Alice'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">FRIENDS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">FRIENDS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>fof<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> fof
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 查找共同朋友,这里的“,”相当于 AND 条件</span>
</span><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>alice<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Alice'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">FRIENDS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>friend<span class="token punctuation">)</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token punctuation">(</span>bob<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Bob'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">FRIENDS</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>friend<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> friend
</span></code></pre>
<p>通过观察<code>John的朋友</code>看过的电影为<code>John</code>推荐电影,并且不再推荐<code>John</code>他自己已经看过的电影。</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span>tom<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">"John Johnson"</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">IS_FRIEND_OF</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>user<span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">HAS_SEEN</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>movie<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">WHERE</span> <span class="token keyword">NOT</span> tom<span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">HAS_SEEN</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>movie<span class="token punctuation">)</span> <span class="token keyword">RETURN</span> movie<span class="token punctuation">.</span>name<span class="token punctuation">;</span>
</span></code></pre>
<p>找出所有标题以<code>Apollo</code>开头且发行年份早于<code>1996</code>年的电影节点</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">MATCH</span> <span class="token punctuation">(</span><span class="token keyword">node</span><span class="token operator">:</span><span class="token class-name">Movie</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">WHERE</span> <span class="token keyword">node</span><span class="token punctuation">.</span>title <span class="token operator">=~</span> <span class="token string">'Apollo.*'</span> <span class="token keyword">AND</span> <span class="token keyword">node</span><span class="token punctuation">.</span>released <span class="token operator">&#x3C;</span> <span class="token number">1996</span>
</span><span class="code-line"><span class="token keyword">RETURN</span> <span class="token keyword">node</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="排序分页"><a aria-hidden="true" tabindex="-1" href="#排序分页"><span class="icon icon-link"></span></a>排序&#x26;分页</h3><div class="wrap-body">
<p>以电影名字排序每一网页只显示10部电影下面的查询返回了第三页21~30项</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">match</span> <span class="token punctuation">(</span>alice<span class="token operator">:</span><span class="token class-name">Person</span> <span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">'Alice'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span>HAS_SEEN<span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span>movie<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">return</span> movie
</span><span class="code-line"><span class="token keyword">order</span> <span class="token keyword">by</span> movie<span class="token punctuation">.</span>name
</span><span class="code-line"><span class="token keyword">skip</span> <span class="token number">20</span>
</span><span class="code-line"><span class="token keyword">limit</span> <span class="token number">10</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="聚合函数"><a aria-hidden="true" tabindex="-1" href="#聚合函数"><span class="icon icon-link"></span></a>聚合函数</h3><div class="wrap-body">
<p>计算每一部电影被观看的数量,按数量排序</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">match</span> <span class="token punctuation">(</span><span class="token keyword">node</span><span class="token operator">:</span><span class="token class-name">Movie</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">HAS_BEEN_SEEN</span><span class="token punctuation">]</span><span class="token operator">-></span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">return</span> <span class="token keyword">node</span><span class="token punctuation">,</span><span class="token function">count</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">order</span> <span class="token keyword">by</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span> <span class="token keyword">desc</span><span class="token punctuation">;</span>
</span></code></pre>
<p>要求<code>John</code>所有朋友的平均年龄,可以使用以下查询</p>
<pre class="language-cypher"><code class="language-cypher code-highlight"><span class="code-line"><span class="token keyword">match</span> <span class="token punctuation">(</span><span class="token keyword">node</span><span class="token operator">:</span><span class="token class-name">users</span><span class="token punctuation">{</span>name<span class="token operator">:</span> <span class="token string">"John Johnson"</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">[</span><span class="token operator">:</span><span class="token relationship property">IS_FRIEND_OF</span><span class="token punctuation">]</span><span class="token operator">-</span><span class="token punctuation">(</span>friend<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">where</span> <span class="token function">HAS</span><span class="token punctuation">(</span>friend<span class="token punctuation">.</span>yearOfBirth<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">return</span> <span class="token function">avg</span><span class="token punctuation">(</span><span class="token number">2014</span><span class="token operator">-</span>friend<span class="token punctuation">.</span>yearOfBirth<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div></div></div></div><script src="https://giscus.app/client.js" data-repo="jaywcjlove/reference" data-repo-id="R_kgDOID2-Mw" data-category="Q&#x26;A" data-category-id="DIC_kwDOID2-M84CS5wo" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="bottom" data-theme="dark" data-lang="zh-CN" crossorigin="anonymous" async></script><div class="giscus"></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 <a href="https://wangchujiang.com/#/app" target="_blank">Kenny Wang</a>.</footer></footer><script src="../data.js?v=1.5.3" defer></script><script src="../js/fuse.min.js?v=1.5.3" defer></script><script src="../js/main.js?v=1.5.3" defer></script><div id="mysearch"><div class="mysearch-box"><div class="mysearch-input"><div><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><input id="mysearch-input" type="search" placeholder="搜索" autocomplete="off"><div class="mysearch-clear"></div></div><button id="mysearch-close" type="button">搜索</button></div><div class="mysearch-result"><div id="mysearch-menu"></div><div id="mysearch-content"></div></div></div></div></body>
</html>