首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找与初始节点具有相同关系的节点

查找与初始节点具有相同关系的节点
EN

Stack Overflow用户
提问于 2013-09-09 15:53:57
回答 1查看 339关注 0票数 1

我有客户(id,name,type),商业(id,name,type)以及它们之间的关系(idcustomer,idcommerce,quantity),它们表示客户在商业和数量中购买了产品。

好的,我想要实现与原始节点有相同关系的节点,我的意思是,如果客户1在商业id=10和id=11中购买的话,我想要获得其他在完全相同的商业中购买的客户(至少)与客户1相同,以便推荐其余的商业。

现在,我有了下一个命令,但它不起作用,因为它返回所有在其中一个商业领域购买的客户,其中客户1购买,但不是所有的客户。

代码语言:javascript
复制
START m=node:id(id="1") MATCH  (m)-[:BUY]->(commerces)<-[:BUY]-(customers)  RETURN customers;

示例

代码语言:javascript
复制
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。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-09 17:17:35

这里有一个解决办法,

第一个查询获取开始节点m购买的所有产品,即第一个"WITH“子句的收集(商业);

第二个查询用m获取每个客户共享的所有产品,即第二个" with“子句的customerCommerces;

然后,"Where“子句消除了那些只共享m购买的产品的子集的客户,因此返回与m共享所有产品的客户。

代码语言:javascript
复制
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 customer
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18702220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档