Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 如何在节点之间创建随机关系?_Neo4j_Cypher - Fatal编程技术网

Neo4j 如何在节点之间创建随机关系?

Neo4j 如何在节点之间创建随机关系?,neo4j,cypher,Neo4j,Cypher,我试图在银行账户之间创建随机交易。我创建了以下查询: //Create transactions CALL apoc.periodic.iterate(" match (a:BANK_ACCOUNT) WITH apoc.coll.randomItem(collect(a)) as sender return sender", " MATCH (b:BANK_ACCOUNT) WHERE NOT sender = b WITH apoc.coll.randomIte

我试图在银行账户之间创建随机交易。我创建了以下查询:

//Create transactions
CALL apoc.periodic.iterate("
match (a:BANK_ACCOUNT)
WITH apoc.coll.randomItem(collect(a)) as sender
return sender", "
MATCH (b:BANK_ACCOUNT)
WHERE NOT sender = b
WITH apoc.coll.randomItem(collect(b)) as receiver
MERGE (sender)-[r:HAS_TRANSFERED {time: datetime()}]->(receiver)
set r.amount = rand()*1000",
{batchSize:100, parallel:false});
我假设它会在随机银行账户之间创建100个随机交易。相反,它创建了一个新的银行账户和一个新的关系。我做错了什么?我应该怎么做

谢谢你的帮助

以下查询用于一次获取200个不同的随机帐户(这比获取一个随机帐户200次快得多):

注:

  • 此查询使用
    CREATE
    而不是
    MERGE
    ,因为
    TRANSFERED\u TO
    关系不太可能已经存在,当前时间为
    time
    值。(如果仍然可以复制,您可以选择使用
    MERGE
  • WHERE SIZE(accts)>1
    测试可避免至少没有2个帐户时出现错误
  • SIZE(accts)/2*2-1
    计算会阻止函数生成超过
    发送方
    帐户的上一个有效索引的列表索引(
    i
  • MATCH (ba:BankAccount)
    WITH apoc.coll.randomItems(COLLECT(ba), 200) AS accts
    WHERE SIZE(accts) > 1 
    UNWIND RANGE(0, SIZE(accts)/2*2-1, 2) AS i
    WITH accts[i] AS sender, accts[i+1] AS receiver
    CREATE (sender)-[:TRANSFERED_TO {time: datetime()}]->(receiver)