现有数据
A类型点 a1,a2,a3
B类型点 b1,b2,b3
关系 a1 ->b1 a2->b2
如何查询 A->B. 不存在关系的所有的A点
你好像混淆了点和边的关系,边是通过两个点来构建的,不是基于某个点的 tag 属性来的。点才是主体
比如 有ABC三个人 AB都吃过苹果 求 ABC中没有吃过苹果的?
只能是 ( ABC )和(吃过苹果的AB)取差集?
你这个例子中不存在关系啊,A 吃不吃苹果和 B 吃不吃苹果没关系啊,你这个例子的话直接用一个 tag 属性是否吃苹果来过筛就好了啊,除非说他们有一个 A 吃了果皮,B 吃果肉,C 吃核,A-B 有个交接关系,B-C 有个交接关系,但是 A-C 没交接关系,你可以基于交接关系,可以去搜下 谁和谁不存在交接关系
这样举个例子:
用户是一类TAG(user)
商品是一类TAG(prod)
用户有user1,user2,user3
商品有prod1,prod2,prod3
如果用户user1 购买了商品 prod1 则存在关系。 user1 购买 prod1
那要计算用户中没有购买过商品prod1 的所有用户怎么计算。
可以这样计算
MATCH (u:user) RETURN u MINUS MATCH (u:user)-[b:buy]->(p:pord{name:‘prod1’}) RETRUN u
想问问有什么其他的方案或者思路
1 个赞
基本就是这样
MATCH (v:A)-[e]-(n:B)
WHERE type(e)<>"edge_exclude"
RETURN v
您这个方法不行,因为没有购买的用户并不存在关系。所以检索不出来。
而我不能为每个用户和商品之间都建立(买)(不买)的关系。因为太多了
我只能在用户购买时建立买的关系
这个需求目前还不支持,需要多 pattern,你的需求对应这样的 cypher 语句:
MATCH (v:A)
WHERE not exists((v)-[bug]->(:B))
RETURN v
目前只能是 MINUS 的那种写法了
请问下,有计划支持此需求吗?
会支持的,在下半年的规划中
该主题在最后一个回复创建后30天后自动关闭。不再允许新的回复。