Neo4j 2.0密码执行唯一用户名(创建唯一节点或失败)

Neo4j 2.0密码执行唯一用户名(创建唯一节点或失败),neo4j,cypher,Neo4j,Cypher,如果用户名已被使用,那么尝试创建用户但在获得适当反馈时失败的最佳方法是什么?还不是线程安全的,但是合并是正确的方法。你可以这样做,在返回之前检查匹配的属性。这种情况取决于以下事实:timestamp()为整个查询返回相同的值,该值已记录在案: 第二次运行此操作时,不会得到任何结果。只是对上面Wes答案的一个补充,如果您将自己的时间戳传递给合并,则可以使用密码的部分避免 MERGE (u:User { username:"test" }) ON CREATE u SET u.created={my

如果用户名已被使用,那么尝试创建用户但在获得适当反馈时失败的最佳方法是什么?

还不是线程安全的,但是
合并
是正确的方法。你可以这样做,在返回之前检查匹配的属性。这种情况取决于以下事实:timestamp()为整个查询返回相同的值,该值已记录在案:


第二次运行此操作时,不会得到任何结果。

只是对上面Wes答案的一个补充,如果您将自己的时间戳传递给合并,则可以使用密码的
部分避免

MERGE (u:User { username:"test" })
ON CREATE u
SET u.created={myTimestamp}
RETURN u

然后只需检查您提供的时间戳是否与返回的时间戳匹配(即,
u.created
)。我需要一个这样的密码,因为它总是返回用户对象。

看起来这个命令可能是解决方案,但我想不出一种方法来编写一个返回,让我知道什么都没有发生。这会提高性能吗,还是纯粹为了可读性?据我所知,用
添加
就像链接多个密码,但我怀疑在这种情况下是否存在任何真正的性能差异。我喜欢此方法的主要原因是,我需要返回用户,无论其是否已创建。我有一个后续问题:
MERGE (u:User { username:"test" })
ON CREATE u
SET u.created={myTimestamp}
RETURN u