这是对我之前的问题的扩展,我尚未收到任何已发布的回复here
我想弄清楚如何创建如下图表
但我最终会以
结束
问题是我看到的MERGE的例子都是基于Label的,并且由于标签是通用的,它最终会在创建出货单2的同时选择出货单2的仓库,因为它们具有相同的名称。与上一篇文章中的日期和月份有同样的问题。
我在Neo4JClient中的代码看起来有点像这样(这里是手工打印的例子)
var qry = GraphClient.Cypher
.Merge("(whse:Warehouse{ Name: {whseName}})")
.OnCreate("whse").Set("whse= {newWhseData}")
.With("whse")
.Start(new { root = shipper2Node})
.CreateUnique("(root)-[:HAS_WAREHOUSE]->(whse)")
.WithParams(new { whseName = newWhse.Name, newWhseData= newWhse})
.Return(whse => whse.Node<Warehouse>());
var whseNode = qry.Results.Single();
我真的需要确保我不为同一个托运人创建重复的仓库,因此在我的代码中使用Merge,我知道Merge and Match正在取代2.0中的Create Unique
我在这里为此重新发帖道歉,但我不确定如何获得帮助。
提前致谢,Kiran
答案 0 :(得分:0)
您可以对子图使用create-unique,但是您在提出MERGE
以使用Paths
类似的东西:
var qry = GraphClient.Cypher
.Start(new { root = shipper2Node})
.CreateUnique("(root)-[:HAS_WAREHOUSE]->(whse Name: {whseName})")
.Set("whse= {newWhseData}")
.WithParams(new { whseName = newWhse.Name, newWhseData= newWhse})
.Return(whse => whse.Node<Warehouse>());