我正在尝试执行以下Cypher查询:
CREATE UNIQUE (
event:Event {
id : '94ECE7BE-882C-446B-94FE-9348E0DF5E08',
startTimestamp : 1370821057.000000,
endTimestamp : 1370907457.000000,
type : 2,
category : 1,
privacy : 1,
dressCode : 4
}),
event<-[:CREATOR]-(creator:User {
id : '55A1CA51-9489-41E1-8083-EC23E974E604',
type : 1,
email : 'something@gmail.com'
});
除了我得到的是有点烦人的错误信息:
Think we should have better error message here? Help us by sending this query to cypher@neo4j.org.
此查询有什么问题?
由于
答案 0 :(得分:1)
create unique
需要一种关系来锚定你的模式。我假设出于性能原因,因为验证数据库中没有节点与查询中的节点匹配会有问题。此外,您的查询在每次执行中都会创建一个新的用户节点,这可能不是您想要的。
如果您有现有的创建者节点(例如,只有已知用户可以添加事件),您可以将其作为起点:
match creator:User where creator.id='unique'
CREATE UNIQUE (
event:Event {
id : '94ECE7BE-882C-446B-94FE-9348E0DF5E08',
startTimestamp : 1370821057.000000,
endTimestamp : 1370907457.000000,
type : 2,
category : 1,
privacy : 1,
dressCode : 4
})<-[:CREATOR]-(creator)
下一个2.0里程碑可能会对类型添加唯一约束。
如果您确实想要创建新的creator
节点,一种解决方法是将所有事件附加到专用锚点,但这将为您提供一个密集节点,可以减慢查询的速度:
start n=node(0) CREATE UNIQUE n-[r:FOO]- (
event:Event {
id : '94ECE7BE-882C-446B-94FE-9348E0DF5E08',
startTimestamp : 1370821057.000000,
endTimestamp : 1370907457.000000,
type : 2,
category : 1,
privacy : 1,
dressCode : 4
})<-[:CREATOR]-(creator:User {
id : '55A1CA51-9489-41E1-8083-EC23E974E604',
type : 1,
email : 'something@gmail.com'
}) return event, creator
所以最好不要那样做。