我正在使用Neo4j 2.0.0-M06.只是学习Cypher并阅读文档.在我看来这个查询会起作用,但我应该很幸运...
我正在将推文导入mysql数据库,并从那里将它们导入neo4j.如果Neo4j数据库中已存在推文,则应进行更新.
我的查询:
MATCH (y:Tweet:Socialmedia) WHERE
HAS (y.tweet_id) AND y.tweet_id = '123'
CREATE UNIQUE (n:Tweet:Socialmedia {
body : 'This is a tweet', tweet_id : '123', tweet_userid : '321', tweet_username : 'example'
} )
Run Code Online (Sandbox Code Playgroud)
Neo4j说: This pattern is not supported for CREATE UNIQUE
数据库在具有匹配标签的节点上当前是空的,因此在Neo4j数据库中没有推文.
什么是正确的查询?
您希望将MERGE用于此查询以及唯一约束.
CREATE CONSTRAINT on (t:Tweet) ASSERT t.tweet_id IS UNIQUE;
MERGE (t:Tweet {tweet_id:'123'})
ON CREATE
SET t:SocialMedia,
t.body = 'This is a tweet',
t.tweet_userid = '321',
t.tweet_username = 'example';
Run Code Online (Sandbox Code Playgroud)
这将使用索引按id查找推文,如果推文存在则不执行任何操作,否则将设置这些属性.