Neo4j CQL - MATCH命令

Neo4j CQL MATCH 命令用于

  • 从数据库获取有关节点和属性的数据

  • 从数据库获取有关节点,关系和属性的数据

MATCH 命令语法:

  [sql]
1
2
3
4
MATCH ( <node-name>:<label-name> )

实际测试

我们前面创建的信息:

  [sql]
1
2
CREATE (dept:Dept {deptNo:10, name:'财务组', location:'上海'}); CREATE (emp:Employee {name:'老马啸西风', age:20, deptNo:10, id:1});

返回部门

我们执行

  [sql]
1
MATCH (dept:Dept)

会报错:

  [plaintext]
1
2
3
Query cannot conclude with MATCH (must be a RETURN clause, an update clause, a unit subquery call, or a procedure call with no YIELD) (line 1, column 1 (offset: 0)) "MATCH (dept:Dept)" ^

需要和 return 结合起来用:

  [sql]
1
2
MATCH (dept:Dept) RETURN dept;

返回的内容:

  [plaintext]
1
2
3
4
5
╒═══════════════════════════════════════════════╕ │dept │ ╞═══════════════════════════════════════════════╡ │(:Dept {name: "财务组",location: "上海",deptNo: 10})│ └───────────────────────────────────────────────┘

返回雇员

  [sql]
1
2
MATCH (emp:Employee) RETURN emp;

会返回所有的

  [plaintext]
1
2
3
4
5
6
7
╒════════════════════════════════════════════════════╕ │emp │ ╞════════════════════════════════════════════════════╡ │(:Employee) │ ├────────────────────────────────────────────────────┤ │(:Employee {name: "老马啸西风",id: 1,age: 20,deptNo: 10})│ └────────────────────────────────────────────────────┘

指定查询 age=20 的

  [sql]
1
2
MATCH (emp:Employee{age:20}) RETURN emp;

结果:

  [plaintext]
1
2
3
4
5
╒════════════════════════════════════════════════════╕ │emp │ ╞════════════════════════════════════════════════════╡ │(:Employee {name: "老马啸西风",id: 1,age: 20,deptNo: 10})│ └────────────────────────────────────────────────────┘

或者这么写:

  [sql]
1
2
3
MATCH (emp:Employee) WHERE emp.age=20 RETURN emp;

结果如下:

  [plaintext]
1
2
3
4
5
╒════════════════════════════════════════════════════╕ │emp │ ╞════════════════════════════════════════════════════╡ │(:Employee {name: "老马啸西风",id: 1,age: 20,deptNo: 10})│ └────────────────────────────────────────────────────┘

RETURN 子句

Neo4j CQL RETURN子句用于 -

  • 检索节点的某些属性

  • 检索节点的所有属性

  • 检索节点和关联关系的某些属性

  • 检索节点和关联关系的所有属性

RETURN 命令语法

  [sql]
1
2
3
4
RETURN <node-name>.<property1-name>, ........ <node-name>.<propertyn-name>

这个命令必须和 match 结合使用

MATCH Command
RETURN Command

实例

比如我们只返回雇员的名字 + AGE

  [sql]
1
2
MATCH(emp:Employee) RETURN emp.name, emp.age

结果:

  [plaintext]
1
2
3
4
5
6
7
╒════════╤═══════╕ │emp.name│emp.age│ ╞════════╪═══════╡ │null │null │ ├────────┼───────┤ │"老马啸西风" │20 │ └────────┴───────┘

当然也可以结合 where

  [sql]
1
2
3
MATCH(emp:Employee) where emp.age = 20 RETURN emp.name, emp.age

结果如下:

  [plaintext]
1
2
3
4
5
╒════════╤═══════╕ │emp.name│emp.age│ ╞════════╪═══════╡ │"老马啸西风" │20 │ └────────┴───────┘

参考资料

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

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