我有两种类型的节点。
我的主要优势是
(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)
我想将数组[MILK,APPLES]设置为关系[BUYS_THE_SAME_THINGS_AS]的属性
在此示例中,这很简单,因为我知道它是牛奶和苹果。但是,让我们说我正在处理超过5万个个人和10万个产品...我希望针对每个匹配的模式,它将产品名称附加到edge属性中的事物数组中
但是我对Cypher还是陌生的,所以找不到解决方法。 因此,如果有人有任何见解,我将很高兴听到
答案 0 :(得分:0)
要将属性添加到新链接中,可以使用以下内容
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