Neo4j随机关系

问题描述

我有一个顶点v,它有很多(百万)条边。每次我查询这些边缘的一小部分(1K)。我希望这些优势在每个查询中都不同。有可能吗?

解决方法

这是使用Cypher的一种方法:

month_ins <- with(df,month_ins[city_insc != "Guayaquil"])

此示例所做的假设:

  • 要返回的随机关系的最大数量由MATCH (v:Foo) WHERE v.id = 'node_with_millions_of_BAR_relationships' WITH v,[(v)-[r:BAR]->() | r] AS rels WITH v,rels,CASE WHEN $limit >= SIZE(rels) THEN 1.0 ELSE TOFLOAT($limit) / SIZE(rels) END AS pct RETURN v,CASE WHEN pct >= 1.0 THEN rels ELSE REDUCE(s = [],x IN rels | CASE WHEN SIZE(s) < $limit AND rand() < pct THEN s + x ELSE s END) END AS randomRels parameter指定。
  • 感兴趣的节点具有limit标签,并且感兴趣的关系是传出的并且具有Foo类型。