新人请教:因为好友是双向的,如果使用bidirect时查2度好友,怎么过滤掉1度好友啊

一度好友查询:

(user@nebula) [friend]> go from 1001 OVER friend bidirect
===============
| friend._dst |
===============
| 1002        |
---------------
| 1003        |
---------------
| 1004        |
---------------
Got 3 rows (Time spent: 2.704/4.444 ms)

二度好友查询

(user@nebula) [friend]> go 2 STEPS from 1001 OVER friend bidirect where friend._dst!=1001 
===============
| friend._dst |
===============
| 1003        |
---------------
| 1011        |
---------------
| 1002        |
---------------
| 1009        |
---------------
| 1011        |
---------------
| 1005        |
---------------
| 1006        |
---------------
Got 7 rows (Time spent: 8.673/11.709 ms)

怎么把1度好友过滤掉呢,还是说双向好友这种需要插入正反2条边?

首先你的问题我没理解,你2度查询出来的就是2度好友,虽然和你1度好友有一样的,但是查出来的确实是2度好友,只是你的1度好友同时又是你的1度好友的好友,所以1度好友会在二度好友中也有。你是希望2度好友里面能够吧1度好友的结果过滤掉的话。你可以MINUS

具体看文档

嗯,需求是做二度人脉推荐,已经是好友的就不用推荐了,所以需要过滤掉,用MINUS过滤测试过了可以,但就是感觉多查了一批数据,比如要查3度的,得手动查询过滤掉2度、1度的关系。不知道你们后面有没有计划支持查纯x度的关系呢(自动过滤掉前几度的)

我理解2.x版本 的match会比较符合 条件

什么叫做纯x度,这个理解上都有偏差。但是肯定是有query可以满足你这样的查询,至于query优化,这个可以根据业务场景修改query

楼上的同学说得没错,2.0的match可能更符合你描述的情景,例如query:

MATCH (:player{name:"Tim Duncan"})-[e:serve*2]-(v)
RETURN v

意为从Tim Duncan这个点出发,沿着serve边返回二度查找的结果

嗯,谢谢,2.0正式版估计什么时候上呀

这个月底

:+1: :+1: