Neo4j示例
安裝完neo4j ,訪問(wèn)對(duì)應(yīng)的web頁(yè)面端口,輸入以下命令進(jìn)行學(xué)習(xí)
節(jié)點(diǎn)操作
創(chuàng)建節(jié)點(diǎn)
- 創(chuàng)建一個(gè)標(biāo)簽為stu的節(jié)點(diǎn) (標(biāo)簽:將數(shù)據(jù)進(jìn)行分類(lèi),方便管理)
create(n:stu);// 這里的n就是隨便起的一個(gè)變量名,代指當(dāng)前實(shí)體或者關(guān)系,下文會(huì)使用到。
- 創(chuàng)建一個(gè)標(biāo)簽為stu 且?guī)в袑傩灾档墓?jié)點(diǎn)
create(n:stu{id:1,name:'小明',age:20});
查詢(xún)節(jié)點(diǎn)
- 按照標(biāo)簽查詢(xún)
match (n:stu) return n;
// 上文說(shuō)到 n類(lèi)似變量名, 一般可用于后續(xù)操作,
// match n:stu 指查詢(xún)到標(biāo)簽為stu的節(jié)點(diǎn) 賦值給變量n ,return n則是將這批節(jié)點(diǎn)返回;
運(yùn)行結(jié)果如下圖
neo4j默認(rèn)是將name屬性用于展示
- 按照id進(jìn)行查詢(xún)
match (n:stu) where id(n) = 38023 return n;
//此id是neo4j默認(rèn)分配給實(shí)體的id 不是上面定義的屬性“id”
- 按照屬性進(jìn)行查詢(xún)
match (n:stu) where n.name = '小明' return n;
- 多屬性條件查詢(xún)
match (n:stu) where n.name = '小明'and n.age = 20 and n.id = 1 return n;
編輯實(shí)體
- 添加多標(biāo)簽
// neo4j 支持多標(biāo)簽
match (n:stu) where id(n) = 38023 set n:stu1 return n;
match (n:stu) where id(n) = 38023 set n:stu2 return n;
可以看到該節(jié)點(diǎn)有三個(gè)標(biāo)簽
- 移除標(biāo)簽
match (n:stu) where id(n) = 38023 remove n:stu2 return n;
match (n:stu) where id(n) = 38023 remove n:stu1 return n;
- 修改某屬性
match (n:stu) where n.name='小明' set n.name = '小紅' return n;
- 修改多個(gè)屬性值
match (n:stu) where n.name='小紅' set n.age = '200' set n.id = 2 return n;
可以看到右側(cè)已經(jīng)修改成功
刪除實(shí)體
//創(chuàng)建測(cè)試數(shù)據(jù)
create(n:stu{id:1,name:'小王',age:20});
//查詢(xún)出來(lái)并刪除
match (n:stu) where n.name = '小王' delete n;
刪除成功可以看到返回提示 已刪除一條實(shí)體
關(guān)系操作
新建關(guān)系和實(shí)體
該操作不需要提前創(chuàng)建實(shí)體
//創(chuàng)建標(biāo)簽為stu 屬性name 的兩個(gè)實(shí)體、標(biāo)簽為test的關(guān)系一個(gè)
create (n:stu{name:'小張'})-[r:test] -> (m:stu{name:'小李'})
//關(guān)系和實(shí)體同理 關(guān)系新建時(shí)也可以添加屬性
create (n:stu{name:'小黃'})-[r:test{name:'夫妻'}] -> (m:stu{name:'小八'})
注:使用 match (n:stu) return n 該命令查詢(xún)搜索stu標(biāo)簽的實(shí)體與關(guān)系
已存在實(shí)體新建關(guān)系
該操作需要提前創(chuàng)建實(shí)體
// 這兩行是一條命令 分割一下看的清晰 第一步就是查出來(lái) m、n實(shí)體 第二布就是給他倆創(chuàng)建關(guān)系
match (n:stu),(m:stu) where n.name = '小李' and m.name = '小八'
create (n)-[r:test{name:'兒子'}]->(m) ;
這時(shí)候我們 match一下 可以看到 這四個(gè)實(shí)體已經(jīng)連接上了文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-739299.html
編輯關(guān)系
- 修改屬性
// 修改關(guān)系屬性
match p = (n)-[r:test]->(m) where r.name='夫妻' set r.name='朋友';
// 我們想修改完后直接可以看到修改結(jié)果 我們?cè)诤竺婕右粋€(gè)return即可 將n-r-m賦值給一個(gè)變量 然后return這個(gè)變量 如下
match p = (n)-[r:test]->(m) where r.name='朋友' set r.name='閨蜜' return p;
//可以看到下放返回的不是提示信息 而是實(shí)體和關(guān)系 如下圖
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-739299.html
- 關(guān)系添加屬性
// 直接set 新屬性賦值即可
match p = (n)-[r:test]->(m) where r.name='閨蜜' set r.color='紅色' return p;
- 修改標(biāo)簽
注意neo4j是不支持修改關(guān)系標(biāo)簽的,所以我們修改標(biāo)簽的操作是重新創(chuàng)建一個(gè)關(guān)系刪除原關(guān)系,這樣操作其實(shí)使用起來(lái)沒(méi)有什么影響,需要注意的是關(guān)系的id會(huì)變
// 四行是一條命令 第一行 搜出來(lái)想要修改的關(guān)系 第二行新建關(guān)系 第三行復(fù)制原屬性 第四行刪除原關(guān)系
MATCH (n)-[r:test]->(m) where r.name='閨蜜'
CREATE (n)-[r2:relation]->(m)
SET r2 = r
DELETE r
刪除關(guān)系
//直接match 鎖定到某個(gè)或某幾個(gè)關(guān)系 delete即可
match (n)-[r:relation]->(m) where r.name = '閨蜜' delete r;
//不確定的話(huà) 可以將delete換成return 先看一下返回的是不是要?jiǎng)h的 然后再進(jìn)行刪除 命令如下
match p = (n)-[r:relation]->(m) where r.name = '閨蜜' return p;
高級(jí)搜索
contains
//包含
match (n:stu) where n.name Contains '小' return n
starts with
//開(kāi)始于某條件 類(lèi)似 like 小%
match (n:stu) where n.name starts with '小' return n
ends with
//結(jié)束于某條件 類(lèi)似 like %紅
match (n:stu) where n.name ends with '紅' return n
limit
//限制返回條數(shù) 放在最后使用 return 后面
match (n:stu) return n limit 2;
SKIP
// 跳過(guò)幾條 然后返回
match (n:stu) return n skip 3;
分頁(yè)
//limit 和skip組合使用就是分頁(yè)
match (n:stu) return n skip 2 limit 2;
order by
- 升序
//默認(rèn)是升序 也可以加上 asc 效果一樣
// 注意 id(n) 這個(gè)寫(xiě)法只針對(duì)于 默認(rèn)生成的id 如果是你添加的屬性不可以這么寫(xiě)
match(n:stu) return n order by id(n) ;
match(n:stu) return n order by id(n) asc;
//自己添加的屬性要用 n.name
match(n:stu) return n order by n.id asc;
- 降序
match(n:stu) return n order by n.id desc;
待續(xù)
到了這里,關(guān)于Neo4j Cypher語(yǔ)法教程 實(shí)體、關(guān)系增刪改、高級(jí)查詢(xún)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!