Cypher - 客户未购买的产品

时间:2016-09-01 13:13:46

标签: neo4j cypher

我正在使用neo4j并拥有产品,类别和子类别。我想获得尚未从子类别购买的剩余产品,或者我们可以说产品推荐。我有这个查询返回那些由特定客户购买的产品和子类别,我不知道如何反转或如何使用未购买的地方,请帮助我,非常感谢!!!

MATCH (n:Customer {customerId : '323'})-[:PURCHASED]->()-[:PRODUCT]->(p:Product)-[:PART_OF_SUBCAT]->(sb:SubCategory) RETURN p,sb

1 个答案:

答案 0 :(得分:1)

您可以采取的一种方法是收集用户购买的产品,并匹配该系列中不属于的相同子类别中的产品。

MATCH (:Customer {customerId : '323'})-[:PURCHASED]->()-[:PRODUCT]->(p:Product)-[:PART_OF_SUBCAT]->(sb:SubCategory) 
WITH COLLECT(p) as boughtProducts, sb
MATCH (recommended:Product)-[:PART_OF_SUBCAT]->(sb)
WHERE NOT recommended IN boughtProducts
RETURN DISTINCT recommended

如果您只对一定数量的推荐项感兴趣,那么您最后会想要添加LIMIT条款。