【问题标题】:Neo4j Cypher 2.0: Pass in params for batch match - relationshipsNeo4j Cypher 2.0:传入参数以进行批量匹配 - 关系
【发布时间】:2014-03-06 17:10:30
【问题描述】:

这个问题类似于这个:create relationships between nodes in parallel 和这个Neo4j: Best way to batch relate nodes using Cypher?

我想使用 Cypher 查询和 Neo4jClient(Neo4j 的 c# 客户端)参数化批处理以创建关系。

我将如何写出来(特别关注性能) - 即仅使用 match 和 create 语句而不是 Merge,因为由于某种原因合并最终超时?

我在想我可以做这样的事情(如第二个 SO 链接中所述)

MATCH (s:ContactPlayer {ContactPrefixTypeId:{cptid}})
MATCH (c:ContactPrefixType {ContactPrefixTypeId:{cptid}})
CREATE c-[:CONTACT_PLAYER]->s

带参数:

{
    "query":...,
    "params": {
        "cptid":id1
     }
}

但这不起作用,因为它试图将属性匹配为数组。

我将其修改为使用WHERE x.Y IN {params},但这非常慢。第二个建议是尝试使用 Neo4j 的事务端点,但我不确定如何使用 Neo4jClient 来做到这一点。

这是上面第二个 SO 链接的建议:

{
    "statements":[
        "statement":...,
        "parameters": {
            "cptid":id1
        },
        "statement":...,
        "parameters": {
            "cptid":id2
        }
    ]
}    

我确实看到了这个拉取请求,但还没有看到它已经实现:https://github.com/Readify/Neo4jClient/pull/26

如果没有事务支持,还有其他方法吗?

【问题讨论】:

    标签: neo4j neo4jclient


    【解决方案1】:

    当您使用下面的查询时,性能如何?

    USING PERIODIC COMMIT 1000
    MATCH (s:ContactPlayer), (c:ContactPrefixType)
    WHERE s.ContactPrefixTypeId = c.ContactPrefixTypeId
    CREATE c-[:CONTACT_PLAYER]->s
    

    如果您想尝试periodic commit 语句,您现在必须使用版本 2.1.0-M1。否则,您可以忽略它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多