首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >基于新节点更新节点属性

基于新节点更新节点属性
EN

Stack Overflow用户
提问于 2019-06-13 03:10:01
回答 1查看 34关注 0票数 0

我有这样的边缘:

代码语言:javascript
复制
(People)-[:USE]->(Product)
(People)-[:REVIEW]->(Product)

现在,我有了一个新的csv,他们是审稿人,但他们缺少我已经拥有的一些属性。

我想做一些类似的事情:

代码语言:javascript
复制
LOAD CSV WITH HEADERS FROM "file:///abcd.csv" AS row 
MERGE (svc:Consumer {name: row.referring_name})
ON CREATE SET
    svc.skewNum = toInteger(row.skew_num)
MERGE (p:PrimaryConsumer) WHERE p.name = svc.name
ON MATCH SET
    svc.city = p.city,
    svc.latitude = toFloat(p.latitude),
    svc.longitude = toFloat(p.longitude),
    svc.consumerId = toInteger(p.primaryConsumerId)

这意味着:

Neo.ClientError.Statement.SyntaxError:输入‘H’无效:应为'i/I‘(第10行,第28列(偏移量: 346)) "MERGE (p:PrimaryConsumer) WHERE p.name = svc.name“

我100%确信这些名称是唯一的,并且将与现有节点集中的唯一使用者名称匹配(待会看到)。

当我在唯一节点属性上有匹配时,如何将现有属性添加到新数据中?(我希望获得唯一的id,但我必须能够更新match上的新数据)

谢谢。

这是整个cypher脚本--根据@cypher的输入进行修改。

代码语言:javascript
复制
 USING PERIODIC COMMIT
    LOAD CSV WITH HEADERS FROM "file:///abcde.csv" AS row
    MERGE (svc:Consumer {name: row.referring_name})
    ON CREATE SET
        svc.skeyNum = toInteger(row.skew_num)
        MATCH (p:primaryConsumer {name: svc:name})
    ON MATCH SET
        svc.city = p.city,
        svc.latitude = toFloat(p.latitude),
        svc.longitude = toFloat(p.longitude),
        svc.providerId = toInteger(p.providerId)
    MERGE (spec:Product {name: row.svc_prod_name})
    ON CREATE SET
        spec.name = row.svc_prov_name,
        spec.skew = toInteger(row.skew_id),
        spec.city = row.svc_prov_city,
        spec.totalAllowed = toFloat(row.total_allowed)
    MERGE (svc)-[r:CONFIRMED_PURCHASE]->(spec)
    ON MATCH SET r.totalAllowed = r.totalAllowed + spec.totalAllowed
    ON CREATE SET r.totalAllowed = spec.totalAllowed
;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-13 03:15:50

MERGE不接受WHERE子句。

更改此设置:

代码语言:javascript
复制
MERGE (p:PrimaryConsumer) WHERE p.name = svc.name

要这样做:

代码语言:javascript
复制
MERGE (p:PrimaryConsumer {name: svc.name})

编辑

然后,整个查询应该如下所示:

代码语言:javascript
复制
LOAD CSV WITH HEADERS FROM "file:///abcd.csv" AS row 
MERGE (svc:Consumer {name: row.referring_name})
ON CREATE SET
    svc.skewNum = toInteger(row.skew_num)
MERGE (p:PrimaryConsumer {name: svc.name})
ON MATCH SET
    svc.city = p.city,
    svc.latitude = toFloat(p.latitude),
    svc.longitude = toFloat(p.longitude),
    svc.consumerId = toInteger(p.primaryConsumerId)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56568906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档