java - neo4j - 如何通过rest api运行1000个对象的查询

标签 java neo4j

我需要运行 1000 个对象的查询。使用 /batch 端点我可以让它工作,但太慢(30 秒处理 300 个项目)。

所以我正在尝试与本文档页面中所述相同的方法:http://docs.neo4j.org/chunked/2.0.1/rest-api-cypher.html#rest-api-create-mutiple-nodes-with-properties

将此 JSON 发布到 http://localhost:7474/db/data/cypher

{
    "params": {
        "props": [
            {
                "_user_id": "177032492760",
                "_user_name": "John"
            },
            {
                "_user_id": "177032492760",
                "_user_name": "Mike"
            },
            {
                "_user_id": "100007496328",
                "_user_name": "Wilber"
            }
        ]
    },
    "query": "MERGE (user:People {id:{_user_id}}) SET user.id = {_user_id}, user.name = {_user_name} "
}

问题是我收到此错误:

{ message: 'Expected a parameter named _user_id',
  exception: 'ParameterNotFoundException',
  fullname: 'org.neo4j.cypher.ParameterNotFoundException',
  stacktrace:
  ...

也许这仅适用于 CREATE 查询,如文档页面所示?

最佳答案

在 ON CREATE SET 中使用 FOREACH 和 MERGE:

 FOREACH (p in {props} | 
    MERGE (user:People {id:{p._user_id}}) 
      ON CREATE  user.name = {p._user_name})

将此 JSON 发布到 http://localhost:7474/db/data/cypher

{
    "params": {
        "props": [
            {
                "_user_id": "177032492760",
                "_user_name": "John"
            },
            {
                "_user_id": "177032492760",
                "_user_name": "Mike"
            },
            {
                "_user_id": "100007496328",
                "_user_name": "Wilber"
            }
        ]
    },
    "query": "FOREACH (p in {props} | MERGE (user:People {id:{p._user_id}}) ON CREATE  user.name = {p._user_name}) "
}

关于java - neo4j - 如何通过rest api运行1000个对象的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22799123/

相关文章:

java - 创建完全动态的 GUI

java - 如何获取 jdbc 的输出或错误流

Web 项目中的 Java 使用和许可

jruby - bundler 无法识别平台?找不到 gem

javascript - 动态创建 Neo4j 关系

c# - 将返回值组合成单一类型

database - Titan 和 Neo4j 图数据库有什么区别?

java - 以正确的方式实现白板模式?

python - "< >"在我的数据库查询输出中意味着什么?

java - 除了oracle之外还有谁实现了JVM规范?除了 Oracle 之外还有其他 JRE/JDK 吗?