我有两种类型的节点。
我的主要优势是
(i:Individual)-[:BUYS]->(p:Product)
例如,
(BOB)-[BUYS]->(MILK)
(BOB)-[BUYS]->(APPLES)
(SAM)-[BUYS]->(BEER)
(LAURA)-[BUYS]->(MILK)
(LAURA)-[BUYS]->(APPLES)
我想要一个优势
(BOB)-[BUYS_THE_SAME_THINGS_AS {shared_products: [MILK, APPLES]}]-(LAURA)
创建边缘非常简单
MATCH (i1:Individual)-[b1:BUYS]->(p:Product)<-[b2:BUYS]-(i2:Individual) WHERE (i1.name <> i2.name)
MERGE (i1)-[BUYS_THE_SAME_THINGS_AS]-(i2)
我想要的是设置关系[BUYS_THE_SAME_THINGS_AS]数组[MILK,APPLES]的属性
在这个例子中它很简单,因为我知道它是牛奶和苹果。但是,让我们说我正在做超过50K个人和100K产品...我希望每个匹配的模式,它将产品名称附加到edge属性中的东西数组
但我是Cypher的新手,无法找到如何做到这一点。所以,如果有人有任何见解,我会很高兴听到
要为新链接添加属性,您可以使用以下内容
MATCH (i1:Individual)-[b1:BUYS]->(p:Product)<-[b2:BUYS]-(i2:Individual)
WHERE (i1.name <> i2.name)
MERGE (i1)-[l:BUYS_THE_SAME_THINGS_AS]-(i2)
ON CREATE set l.things=[p.name]
ON MATCH set l.things=l.things+p.name