批处理操作中更新节点密钥索引

时间:2013-10-24 08:27:54

标签: neo4j

我不能让neo更新批处理的操作中的现有节点属性。

我想创建一个在索引中插入/更新节点的批处理操作。它应该处理三个​​用例:

  1. 如果节点不存在,请使用给定的属性集
  2. 插入它
  3. 如果节点存在,请更新使用新值设置的属性(如果有)。
  4. 我正在使用批处理操作api,我写了一个测试,我发出了两个请求: 短 1.第一个插入节点并索引它的属性 2.第二个只是更新节点的一些属性

    这是第一个请求:

      

    [       {           “方法”:“POST”,           “to”:“/ index / node / events?uniqueness = get_or_create”,           “id”:1,           “身体”: {               “key”:“id”,               “价值”:“222222222”,               “properties”:{                   “id”:“222222222”,                   “type”:“event-type”               }           }       },       {           “方法”:“POST”,           “to”:“/ index / node / events”,           “身体”: {               “uri”:“{1}”,               “key”:“id”,               “价值”:“222222222”           }       },       {           “方法”:“POST”,           “to”:“/ index / node / events”,           “身体”: {               “uri”:“{1}”,               “关键”:“类型”,               “价值”:“事件类型”           }       }]

    现在是第二个。

      

    [       {           方法:'POST',           to:'/ index / node / events?uniqueness = get_or_create',           id:1,           身体: {               key:'id',               价值:'222222222',               properties:{id:'222222222',type:'event-type',title:'SUPEREVENT'}           }       },       {           方法:'POST',           to:'/ index / node / events',           身体: {               uri:'{1}',               key:'id',               价值:'222222222'           }       },       {           方法:'POST',           to:'/ index / node / events',           身体: {               uri:'{1}',               key:'type',               价值:'事件类型'           }       },       {           方法:'POST',           to:'/ index / node / events',           身体: {               uri:'{                   1               }”,               关键:'标题',               价值:'SUPEREVENT'           }       }   ]

    请注意!我在第二个请求中添加了值为title的事件SUPEREVENT属性。这不会持久存在也不会被编入索引。为什么?我该如何解决?

    谢谢你, 亚历克斯

1 个答案:

答案 0 :(得分:0)

来自doc:

  

URL参数uniqueness = get_or_create:创建新节点/关系   如果找不到现有的索引则对其进行索引。如果存在   找到节点/关系,丢弃发送的数据并返回   现有节点/关系。

因此您的第二个请求的数据将被丢弃。您需要将每个请求分成两个请求,并分两批进行。这两个批次中的每一个都有两个指令:第一个创建节点(如果不存在),第二个更新属性。