У меня есть два типа узлов.
- Индивидуальный
- Продукт
Мой главный край -
(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]
В этом примере это просто, потому что я знаю, что это молоко и яблоки. Но, допустим, я делаю это для более чем 50 тыс. Человек и 100 тыс. Продуктов ... Я хочу, чтобы для каждого сопоставленного шаблона оно добавляло имя продукта в массив вещей в свойстве edge
Но я новичок в Cypher и не могу найти, как это сделать.
Так что если у кого-то есть идеи, я был бы рад услышать