我有客户(id,name,type),商业(id,name,type)以及它们之间的关系(idcustomer,idcommerce,quantity),它们表示客户在商业和数量中购买了产品。
好的,我想要实现与原始节点有相同关系的节点,我的意思是,如果客户1在商业id=10和id=11中购买的话,我想要获得其他在完全相同的商业中购买的客户(至少)与客户1相同,以便推荐其余的商业。
现在,我有了下一个命令,但它不起作用,因为它返回所有在其中一个商业领域购买的客户,其中客户1购买,但不是所有的客户。
START m=node:id(id="1") MATCH (m)-[:BUY]->(commerces)<-[:BUY]-(customers) RETURN customers;示例
Customer 1 bought commerce 10, 11
Customer 2 bought commerce 10, 3
Customer 3 bought commerce 10, 11, 4
Customer 4 bought commerce 5, 8, 10我想要的回报是客户3,以便推荐商务4。
谢谢。
发布于 2013-09-09 17:17:35
这里有一个解决办法,
第一个查询获取开始节点m购买的所有产品,即第一个"WITH“子句的收集(商业);
第二个查询用m获取每个客户共享的所有产品,即第二个" with“子句的customerCommerces;
然后,"Where“子句消除了那些只共享m购买的产品的子集的客户,因此返回与m共享所有产品的客户。
START m=node:id(id="1")
Match (m)-[:BUY]->(commerce)
With collect(commerce) as mCos
START m=node:id(id="1")
Match (m)-[:BUY]->(commerce)<-[:BUY]-(customer)
with mCos, customer, collect(commerce) as customerCommerces
Where length(mCos) = length(customerCommerces)
Return customerhttps://stackoverflow.com/questions/18702220
复制相似问题