我有一张包含优惠和客户的图表。一个客户可以与另一个客户分享一个报价,所以当这种情况发生时,我创建了一个超优势。
(CustomerA)-[:SHARED_OFFER]->(newNode)
(newNode)-[:FOR_OFFER]->(offer)
(newNode)-[:SHARED_WITH]->(customers) (这可以是很多客户)
现在,如果另一个客户 B 与其他人共享相同的报价,我希望创建一个新节点来表示这种关系。有没有办法在一个 Cypher 查询中完成所有这一切?
我在用:
start c=node:node_auto_index(name="C1"), o=node:node_auto_index(name="Offer"), sharedCustomer=node:node_auto_index(name="C2")
create unique c-[:SHARED_OFFER]->(sharedOffer)-[:FOR_OFFER]->(o), (sharedOffer)-[:SHARED_WITH]->(sharedCustomer)
这是第一次工作。请参阅控制台:http ://console.neo4j.org/r/76no2g 当 C1 与 C2 共享商品时,此查询正确创建了关系。
对 C2 现在与 C3 共享 Offer 的情况执行查询会导致同一节点被重用——这不是我想要的。应该有一个从 C2 创建的具有 SHARED_OFFER 关系的新节点。这是查询:
start c=node:node_auto_index(name="C2"), o=node:node_auto_index(name="Offer"), sharedCustomer=node:node_auto_index(name="C3")
create unique c-[:SHARED_OFFER]->(sharedOffer)-[:FOR_OFFER]->(o), (sharedOffer)-[:SHARED_WITH]->(sharedCustomer)
任何帮助表示赞赏。注意:我使用的是 1.8.1 REST,因此尝试一次性完成这一切,而不是部分完成。