【发布时间】:2014-08-14 16:19:33
【问题描述】:
为了说明这个问题,创建一千个标记为 z 且具有递增数字属性 zid 的节点。
FOREACH (i IN range(1, 1000)| CREATE (z:z { zid: i }));
现在使用 1 到 1000 之间的随机 zid 值查找节点。
MATCH (n:z { zid: round(rand()*1000)})
RETURN n;
上述密码返回不一致的结果,有时不返回节点,有时返回多个节点。
如下调整密码会产生一致的结果。
WITH round(rand()*1000) AS x
MATCH (n:z { zid: x })
RETURN x, n;
第一个密码查询有什么问题?
【问题讨论】:
-
多个节点返回了哪些值?如果 rand()*1000 的计算结果为零,则不会返回任何节点,因为您没有创建任何 id 为零的节点。