Neo4j 合并查询:设置映射和';创建';创设时的财产
我试图创建一个用户,如果它还不存在,那么就知道是否创建了 此语法始终执行第二组:Neo4j 合并查询:设置映射和';创建';创设时的财产,neo4j,cypher,Neo4j,Cypher,我试图创建一个用户,如果它还不存在,那么就知道是否创建了 此语法始终执行第二组: MERGE (n:User {email: {email}}) ON CREATE n SET n = {user} SET n.created = timestamp() WITH n WHERE n.created = timestamp() RETURN n 我猜第二个集合实际上不是ON CREATE子句的一部分,如下所示: MERGE (n:User {email: {email}}) ON CR
MERGE (n:User {email: {email}})
ON CREATE n
SET n = {user}
SET n.created = timestamp()
WITH n WHERE n.created = timestamp()
RETURN n
我猜第二个集合实际上不是ON CREATE子句的一部分,如下所示:
MERGE (n:User {email: {email}})
ON CREATE n
SET n = {user}
SET n.created = timestamp()
WITH n WHERE n.created = timestamp()
RETURN n
但是,多个集合的替代语法会导致“错误:预期的有效查询体”:
作为一种解决方法,我决定将创建的时间戳与用户地图一起传递,但是有没有办法做到这一点?它是否按预期工作,或者这里是否有bug,也许?最后一个在我看来应该可以工作——您能提出github问题吗?我们来看看neo的人怎么说,但我认为用逗号分隔的集合应该没问题 或者,您可以在创建时执行多个操作:
MERGE (n:User {email: {email}})
ON CREATE n
SET n = {user}
ON CREATE n
SET n.created = timestamp()
WITH n WHERE n.created = timestamp()
RETURN n
即使使用非合并查询,似乎也无法混合和匹配设置映射和属性:。你认为我还应该为此制造问题吗?或者这是预期的?如果你不这样做,我会的。:)不幸的是,你提议的解决办法似乎不起作用。我得到
节点[23036]上不存在属性“created”
。它似乎没有设置创建的timestamp.Doh。你是按同样的顺序做的吗?也许试着换一下?(这两个选项将创建)。我实际上无法测试它。我猜它会在所有事情之后处理map参数集并将其清除。这对我来说似乎也不对,但也许你不应该有两个/
MERGE (n:User {email: {email}})
ON CREATE n
SET n = {user}
ON CREATE n
SET n.created = timestamp()
WITH n WHERE n.created = timestamp()
RETURN n