在我的图表中,我们的用户与产品有 2 个称为“最喜欢”和“看过”的关系,并且产品有称为“有”的关系,具有一些规格,如颜色(红蓝...)、类型(牛仔裤...)和尺寸(30...)
我编写了一个查询,每当我想创建最喜欢或看到的关系时,它都会与该特定用户和该产品的规格(称为“重量”)建立关系,并为称为“分数”的属性设置属性。
每次用户将产品设置为最喜欢的或只是看到该产品(例如当用户看到该产品时),我想增加这个分数,分数更改为+10,最喜欢的分数更改为+20,然后我们推荐得分最高的规格产品。
我的查询是:
match (user:Users{m_id:""}),(m:Products{m_id:""})-[:HAS]->(a:Specifications)
MERGE (user) -[:FAVORITE]-> (m)
merge (user)-[:WEIGHT{score:0}]->(a)
此查询的另一个问题是,如果我已经有了新的关系,我不想建立新的关系;我只是想提高分数
您只需合并关系,然后相应地设置属性。
MERGE (user)-[w:WEIGHT]-(a)
ON CREATE SET w.score = 10
ON MATCH SET w.score = w.score+10
或者无条件更新
MERGE (user)-[w:WEIGHT]-(a)
SET w.score = coalesce(w.score,0)+10