我正在试验一个代表(:Shopper)
“谁-[:Make]->(:Purchase)
”和“每次购买-[:Contains]->(:Item)
”的图表。挑战在于我想比较每个购物者最近购买的物品 A 的数量。消除只有一个 :Contains 关系的项目将不起作用,因为该项目也可能是在较早的购买中购买的。
我可以通过以下方式获取所有购物者最近购买的所有商品的数据集
MATCH (s:Shopper)-->(p:Purchase)
WITH s, max(p.Time) AS latest
MATCH (s)-->(p:Purchase)
WHERE p.Time = latest
MATCH (p)-[c:Contains]->(i:Item)
RETURN s.Name, p.Time, c.Quantity, i.Name
但现在我想用类似的东西替换第二个 MATCH 子句
MATCH (p:Purchase)-[c1:Contains]->(i:Item)<-[c2:Contains]-(p:Purchase)
它不返回任何结果。我怀疑这会寻找具有两个 :Contains 与 SAME Purchase 的关系的项目。我想在同一个过滤组中获得:包含两个不同购买的关系。我怎样才能有效地做到这一点?我真的想避免在第二个购买节点上重做过滤过程。