如何在Neo4j中以随机方式更新节点

时间:2015-10-15 07:22:35

标签: neo4j

如何更新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

感谢您的帮助。

1 个答案:

答案 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

对节点执行任何操作