Files
reference/docs/neo4j.html
2024-05-07 01:53:54 +00:00

185 lines
47 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="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 时,首先需要从<a href="https://neo4j.com/download/">官网下载页面</a>下载 Neo4j。Neo4j 分为社区版和企业版。尽管企业版在横向扩展、权限控制、运行性能和高可用性等方面更优秀,适合正式的生产环境,但对于普通的学习和开发,免费的社区版就足够了。</p>
<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></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"><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">// 查找 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>