Neo4j CQL语法

1. 创建节点

CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })

其中dept为节点名,Dept为标签名(可理解为表名)

CREATE (emp:Employee{id:123,name:"Lokesh",sal:35000,deptno:10})

2. 检索

Neo4j使用CQL MATCH + RETURN命令 - 

  • 检索节点的某些属性
  • 检索节点的所有属性
  • 检索节点和关联关系的某些属性
  • 检索节点和关联关系的所有属性
MATCH (dept: Dept) RETURN dept.deptno,dept.dname

3. 创建关系

在以下场景中,我们可以使用Neo4j CQL CREATE命令来创建两个节点之间的关系。 这些情况适用于Uni和双向关系。

  • 在两个现有节点之间创建无属性的关系
MATCH (e:Customer) RETURN e

MATCH (cc:CreditCard) RETURN cc

MATCH (e:Customer),(cc:CreditCard) CREATE (e)-[r:DO_SHOPPING_WITH ]->(cc)
  • 在两个现有节点之间创建与属性的关系
MATCH (cust:Customer),(cc:CreditCard) CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc) RETURN r

  • 在两个新节点之间创建无属性的关系
  • 在两个新节点之间创建与属性的关系
CREATE (video1:YoutubeVideo1{title:"Action Movie1",updated_by:"Abc",uploaded_date:"10/10/2010"}) -[movie:ACTION_MOVIES{rating:1}]-> (video2:YoutubeVideo2{title:"Action Movie2",updated_by:"Xyz",uploaded_date:"12/12/2012"})
  • 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系

4. 创建标签

使用Neo4j CQL CREATE命令

  • 为节点创建单个标签
CREATE (google1:GooglePlusProfile)
  • 为节点创建多个标签
CREATE (m:Movie:Cinema:Film:Picture)
  • 为关系创建单个标签
CREATE (p1:Profile1)-[r1:LIKES]->(p2:Profile2)、

5. Where子句创建关系

MATCH (cust:Customer),(cc:CreditCard) WHERE cust.id = "1001" AND cc.id= "5001" CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc) RETURN r

MATCH (a{name:"Laurence Fishburne"})-[r1:ACTED_IN]->(m)<-[r2:DIRECTED]-(d)  RETURN a,r1,r2,m,d与MATCH (a)-[r1:ACTED_IN]->(m)<-[r2:DIRECTED]-(d) where a.name="Laurence Fishburne" RETURN a,r1,r2,m,d中where子句等价

6. Delete节点和关系

MATCH (e: Employee) DELETE e

MATCH (cc: CreditCard)-[rel]-(c:Customer) DELETE cc,c,rel

7. Remove删除标签和属性

删属性

MATCH (book { id:122 }) REMOVE book.price RETURN book

删标签

MATCH (m:Movie) REMOVE m:Picture

8. Set添加属性

MATCH (dc:DebitCard) SET dc.atm_pin = 3456 RETURN dc

9. Sorting排序

MATCH (emp:Employee) RETURN emp.empid,emp.name,emp.salary,emp.deptno ORDER BY emp.name

10. Union合并

<MATCH Command1> UNION <MATCH Command2>

11. Limit与skip

MATCH (emp:Employee) RETURN emp LIMIT 2

MATCH (emp:Employee) RETURN emp SKIP 2

Neo4j CQL已提供“SKIP”子句来过滤或限制查询返回的行数。 它修整了CQL查询结果集顶部的结果,前两行跳过。

12. Merge合并

MERGE = CREATE + MATCH

用于检查是否已经创建该节点,因为CQL MERGE命令检查该节点在数据库中是否可用。 如果它不存在,它创建新节点。 否则,它不创建新的。

13. In 操作

MATCH (e:Employee) WHERE e.id IN [123,124] RETURN e.id,e.name,e.sal,e.deptno

14. 方向关系

Neo4j只支持有方向的关系

15. 字符串函数(upper、lower、substring、replace)

MATCH (e:Employee) RETURN e.id,UPPER(e.name),e.sal,e.deptno

Upper、lower、substring(字符串下标SUBSTRING(e.name,0,2),0到2的字符)、replace

16. 聚合函数(count、max、min、sum、avg)

MATCH (e:Employee) RETURN MAX(e.sal),MIN(e.sal)

17. 关系函数(startnode、endnode、id、type)

MATCH (a)-[movie:ACTION_MOVIES]->(b) RETURN ENDNODE(movie)

MATCH (a)-[movie:ACTION_MOVIES]->(b) RETURN ID(movie),TYPE(movie)

系统内部ID

18. Unique约束

CREATE CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE

DROP CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE

19. 模糊查询

查询N类型中,属性attr包含‘a1’或者‘a2’的所有节点。

match (n:N) where n.attr =~ '.*a1.*|.*a2.*' return n

 

 

参考:https://cloud.tencent.com/developer/article/1336299

https://www.w3cschool.cn/neo4j/

https://neo4j.com/docs/getting-started/3.5/get-started-with-neo4j/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值