3

我想在第二个查询中使用第一个查询的结果。我不确定如何在 Cypher 中执行此操作?

当前代码,

START user1=node:USER_INDEX(USER_INDEX = "userA") 
MATCH user1-[r1:ACCESSED]->docid1<-[r2:ACCESSED]-user2, user2-[r3:ACCESSED]->docid2 
WHERE r2.Topic=r3.Topic 
RETURN distinct docid2.Label;

我想在 WHERE 子句中为同一组 docid2 节点检查不同的条件,并根据日期字段累积结果并执行 order by。我无法在同一个交易中提供多个匹配和返回。那是当我试图拥有两个不同的密码脚本并将它们组合到第三个查询中时。这在密码中可能吗?或者是否有任何选项可以编写自定义函数并调用它们?我们是否存储了像 Stored Gremlin 脚本这样的 Cypher 脚本?

4

1 回答 1

1

正如迈克尔在评论中提到的,您可以使用“with”语句将结果流式传输到进一步的语句中。不幸的是,您不能在“where”子句之后开始另一个语句。多个返回语句有点不合逻辑,但您可以在单个查询中执行多项操作,例如:

START x=node:node_auto_index(key="x")
with count(x) as exists
start y=node:node_auto_index(key="y")
where exists = 0
create (n {key:"y"})<-[:rel]-y
return n, y

这将检查“x”节点是否存在,如果不存在,则继续创建它并添加几个参数。

如果您希望在结果集上做更复杂的事情,您最好的选择是批处理请求或 Java API...

于 2013-05-14T14:11:48.853 回答