我已经加载了我创建的自定义查询模块。如何在Memgraph中调用它?
一旦您开发的MAGE查询模块或任何自定义模块加载到Memgraph中,您就可以使用以下Cypher语法在查询中调用它们:
CALL module.procedure(arg1, "string_argument", ...) YIELD res1, res2, ...;
每个过程返回零个或多个记录,其中每个记录都包含命名字段。YIELD
子句用于选择您感兴趣的字段或全部字段(*
(。如果您对任何字段都不感兴趣,请省略YIELD
子句。该过程仍将运行,但记录字段不会存储在变量中。如果您尝试YIELD
字段不是生成的记录的一部分,则查询将导致错误。
过程可以是独立的,如上例所示,也可以是较大查询的一部分,当我们希望过程处理查询生成的数据时。
例如:
MATCH (node) CALL module.procedure(node) YIELD result RETURN *;
如果CALL
子句是较大查询的一部分,则使用RETURN
子句返回查询结果。如果CALL
子句后面跟着一个只更新数据而不读取数据的子句,则RETURN
是不必要的。Cypher约定,只读查询需要以RETURN
结束,而更新某些内容的查询不需要以RETURN
结束。
此外,如果过程本身写入数据库,则查询中的所有其他子句只能从数据库中读取,CALL子句后面只能跟YIELD子句和/或RETURN子句。
如果过程返回的记录的字段名称与查询中已有的某个变量的字段名称相同,则可以使用AS
子条款将该字段名称与其他名称别名:
MATCH (result) CALL module.procedure(42) YIELD result AS procedure_result RETURN *;