【问题标题】:Neo4j Cypher Relationships bulk update propertiesNeo4j Cypher 关系批量更新属性
【发布时间】:2019-04-17 21:42:05
【问题描述】:

我希望有人能帮我弄清楚为什么这个对关系属性的批量更新在给定的数据集上不起作用。数据集中的 id 值是关系的 neo4j ID。 tqrpcweight 是上面的属性。

var batchUpdate = [{"id":281,"tq":8,"rpc":2.4,"weight":84},{"id":283,"tq":5,"rpc":1.25,"weight":10},
{"id":286,"tq":4,"rpc":3.2,"weight":5}];

var nQuery = WITH {batchUpdate} AS stats UNWIND stats AS s MATCH ()-[k:BELONGS_TO]-() WHERE id(k)=s.id SET k.weight=s.weight, k.rpc=s.rpc, k.tq=s.tq;

session
.run(nQuery,{batchUpdate:batchUpdate})
.then(function (result) {
console.log('updated');
})
.catch(function (error) {
console.log('neo4j stats update error ' + error);
});

我没有收到任何错误,它属于成功功能,但实际上没有属性更新。

【问题讨论】:

    标签: neo4j cypher neo4j-driver neo4j-javascript


    【解决方案1】:

    使用官方 neo4j Javascript 驱动程序时,您应该使用 neo4j.int() 函数来包装通过参数传递的整数值,以解决 Javascript 不支持 64 位整数的事实(而这正是 neo4j用途)。默认情况下,Javascript 驱动程序将参数中的整数转换为浮点数。

    浮点数不会被视为等于等效整数。

    尝试更改您的数组,如下所示:

    var neo4j = require('neo4j-driver').v1;
    
    ...
    
    var batchUpdate = [
      {"id":neo4j.int(281),"tq":neo4j.int(8),"rpc":2.4, "weight":neo4j.int(84)},
      {"id":neo4j.int(283),"tq":neo4j.int(5),"rpc":1.25,"weight":neo4j.int(10)},
      {"id":neo4j.int(286),"tq":neo4j.int(4),"rpc":3.2, "weight":neo4j.int(5)}
    ];
    

    【讨论】:

    • 哇,很好的答案。工作完美!谢谢你:)
    • 太棒了!请记住 accept 最适合您的问题之一的答案。
    猜你喜欢
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多