我可以在SET子句中使用对象属性来进行neo4j cypher查询

时间:2017-03-29 20:54:48

标签: neo4j cypher

我想创建一个具有对象属性的节点,即

name: {
fname: String;
mname: String,
lname: String
}

Match (n: email:"123@mail.com"}) SET n.name=name Return n;

我一直在搜索SO和文档但没有成功。我见过的最接近的是{map},但我不确定如何使用它。

1 个答案:

答案 0 :(得分:1)

您不能将字典/地图/对象存储为Neo4j中的节点上的属性,只能存储基元(int,float,string和基元数组)。

但是,您可以将对象作为参数传递,并在SET子句中引用该对象的元素:

var name = {
    fname: "Bob",
    mname: "E",
    lname: "Loblaw",
}

WITH {name} AS name
MATCH (n:Person {email: "123@mail.com"}) 
SET n.fname = name.fname,
    n.mname = name.mname,
    n.lname = name.lname

您还可以将对象的所有元素设置为节点上的属性:

var name = {
    fname: "Bob",
    mname: "E",
    lname: "Loblaw",
}

WITH {name} AS name
MATCH (n:Person {email: "123@mail.com"}) 
SET n = n + name