Neo4j CQL - MATCH命令

Neo4j CQL MATCH 命令用于

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

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

MATCH 命令语法:

MATCH 
(
   <node-name>:<label-name>
)

实际测试

我们前面创建的信息:

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

返回部门

我们执行

MATCH (dept:Dept)

会报错:

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 结合起来用:

MATCH (dept:Dept)
RETURN dept;

返回的内容:

╒═══════════════════════════════════════════════╕
│dept                                           │
╞═══════════════════════════════════════════════╡
│(:Dept {name: "财务组",location: "上海",deptNo: 10})│
└───────────────────────────────────────────────┘

返回雇员

MATCH (emp:Employee) 
RETURN emp;

会返回所有的

╒════════════════════════════════════════════════════╕
│emp                                                 │
╞════════════════════════════════════════════════════╡
│(:Employee)                                         │
├────────────────────────────────────────────────────┤
│(:Employee {name: "老马啸西风",id: 1,age: 20,deptNo: 10})│
└────────────────────────────────────────────────────┘

指定查询 age=20 的

MATCH (emp:Employee{age:20}) 
RETURN emp;

结果:

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

或者这么写:

MATCH (emp:Employee)
WHERE emp.age=20 
RETURN emp;

结果如下:

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

RETURN 子句

Neo4j CQL RETURN子句用于 -

  • 检索节点的某些属性

  • 检索节点的所有属性

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

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

RETURN 命令语法

RETURN 
   <node-name>.<property1-name>,
   ........
   <node-name>.<propertyn-name>

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

MATCH Command
RETURN Command

实例

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

MATCH(emp:Employee)
RETURN emp.name, emp.age

结果:

╒════════╤═══════╕
│emp.name│emp.age│
╞════════╪═══════╡
│null    │null   │
├────────┼───────┤
│"老马啸西风" │20     │
└────────┴───────┘

当然也可以结合 where

MATCH(emp:Employee)
where emp.age = 20
RETURN emp.name, emp.age

结果如下:

╒════════╤═══════╕
│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