我有带有多个REVIEW节点的PRODUCT节点。如果产品不存在,我将创建节点PRODUCE,然后与REVIEW绑定。
例如,我想要一个PRODUCE节点{name:'X phone'},其REVIEW为3,{content:'有史以来最好的手机'},{content:'有史以来最差的手机'},{content:'nope'} 。
我尝试过
首先,对每个REVIEW使用一个密码MERGE。
[Thu Aug 09 09:49:25.365878 2018] [core:error] [pid 32484] [client 127.0.0.1:52662] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://produk.adev.co.id/
它不起作用,将创建3个PRODUCT {name:'X phone'}
我试图使用MERGE来创建/重复使用该产品,他们进行了MATCH + MERGE评论。 (每个评论2个密码)
MERGE(product:PRODUCT{name:'X phone'})-[:RATE]-(review:REVIEW{content:'best phone ever'})
MERGE(product:PRODUCT{name:'X phone'})-[:RATE]-(review:REVIEW{content:'worst phone ever'})
MERGE(product:PRODUCT{name:'X phone'})-[:RATE]-(review:REVIEW{content:'nope'})
第二个解决方案有效,它仅创建1个PRODUCT并将3个REVIEW连接到该PRODUCT。但是,我必须使用两倍的密码。
我想问问我的问题是否有更好的方法?
解决方案
我不知道我可以将MERGE与MERGE链接
感谢@MạnhQuyếtNguyễn的答案,我可以为每个带有2个MERGE子句的评论样本做1个密码。如果不存在,则首先进行MERGE创建产品,如果不存在,则进行第二次MERGE创建审阅。
// create/reuse PRODUCT
MERGE(product:PRODUCT{name:'X phone'})
// create/reuse review
MATCH (product:PRODUCT{name:'X phone'}) MERGE (product)-[:RATE]-(review:REVIEW{content:'nope'})
// create/reuse PRODUCT
MERGE(product:PRODUCT{name:'X phone'})
// create/reuse review
MATCH (product:PRODUCT{name:'X phone'}) MERGE (product)-[:RATE]-(review:REVIEW{content:'best phone ever'})
// create/reuse PRODUCT
MERGE(product:PRODUCT{name:'X phone'})
// create/reuse review
MATCH (product:PRODUCT{name:'X phone'}) MERGE (product)-[:RATE]-(review:REVIEW{content:'worst phone ever'})
答案 0 :(得分:1)
您随后的匹配/合并是多余的。您可以这样做:
// create/reuse PRODUCT
MERGE (product:PRODUCT {name:'X phone'})
MERGE (product)-[:RATE]-(:REVIEW {content:'nope'})
MERGE (product)-[:RATE]-(:REVIEW {content:'best phone ever'})
MERGE (product)-[:RATE]-(:REVIEW {content:'worst phone ever'})