3.1.3 查询和更新图

Cypher语句既可用于查询,又可用于更新图数据。

3.1.3.1 更新语句的结构

一个Cypher查询部分不能同时匹配和更新图数据。每个部分要么读取和匹配图,要么更新它。

如果需要从图中读取,然后更新图,那么该查询隐含地包含两个部分——第一部分是读取,第二部分是写入。如果查询只是读取,Cypher将采用惰性加载(Lazy Load),事实上并没匹配模式,直到需要返回结果时才去实际匹配。在更新查询语句中,所有读取操作必须在任何写操作发生之前完成。

当希望使用聚合数据进行过滤时,必须使用WITH将两个读语句部分连接在一起。第一部分做聚合,第二部分过滤来自第一部分的结果。如下所示:

下面是一个将聚合数据更新到图中的例子:

可以尽可能多地将查询部分链接在一起。

3.1.3.2 返回数据

任何查询都可以返回数据。RETURN语句有三个子语句,分别为SKIP、LIMIT和ORDER BY。如果返回的图元素是刚刚删除的数据,需要注意的是这时数据的指针将不再有效,针对它们的任何操作都无法正确运行。