Neo4j 2.0 cypher强制使用唯一的用户名(创建唯一节点或失败)

时间:2013-07-15 18:43:23

标签: neo4j cypher

尝试创建用户的最佳方法是什么,但如果已经使用了用户名,则会以适当的反馈失败?

2 个答案:

答案 0 :(得分:3)

尚未安全线程,但MERGE是执行此操作的正确方法。你可以做这样的事情,那种检查属性匹配的东西在返回之前。这种情况取决于timestamp()为整个查询返回相同的值,记录如下:http://docs.neo4j.org/chunked/milestone/query-functions-scalar.html#functions-timestamp

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

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

答案 1 :(得分:2)

只是Wes'的补充。如上所述,如果您将自己的时间戳传递给合并,则可以避开Cypher的WITH部分。

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

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