如何更新Neo4j中的一组随机节点。我尝试了下面的内容:
match (Firstgraph)
with id(Firstgraph) as Id
return Firstgraph.name, Firstgraph.version,id(Firstgraph)
order by rand();
match (G1:FirstGraph)
where id(G1)=Id
set G1.Version=5
我的想法是得到一个随机集然后更新它,但我得到了错误:
Expected exactly one statement per query but got: 2
感谢您的帮助。
答案 0 :(得分:0)
让我们先找出问题所在,首先是你的错误
每个查询只需要一个语句,但得到:2
这是来自您的查询,如果我们检查它,我们会看到您在同一个句子中执行了两次查询,这就是您收到此错误的原因。
match (Firstgraph) with id(Firstgraph) as Id
return Firstgraph.name, Firstgraph.version,id(Firstgraph) order by
rand(); match (G1:FirstGraph) where id(G1)=Id set G1.Version=5
这不是一个好的查询,因为您无法在查询语句中使用;
,它是查询结束标记,因此您无法在此之后执行其他查询,但您可以使用UNION
:
match (Firstgraph) with id(Firstgraph) as Id
return
Firstgraph.name, Firstgraph.version,id(Firstgraph) order by rand()
UNION
match (G1:FirstGraph) where id(G1)=Id set G1.Version=5
此外,如果您想匹配一组随机节点,您可以简单地执行此操作(此示例有50%的机会获得每个节点):
Match (node) Where rand() > 0.5 return node
然后使用WITH