我们有一个图表,其中用户与他/她感兴趣的一些主题节点相关,并且这些主题通过某种关系与某些问题相关联。通过以下查询很容易得到用户感兴趣主题的所有问题。
match(u:user{name:'vartika'})<-[:userinteresttag]-(tag)-[:tagofquestion]->(q:question) return q.title
(user)
/ \
/ \
(subject1) (subject2) (subject3)
/ \ /
/ \ /
(ques1) (ques2) (ques3) (ques4)(ques5)
但现在的问题是如何解决特定用户感兴趣的主题以外的问题。如何塑造查询以获得非兴趣课程的问题。 (用户和问题节点未直接连接,如图中所示)
*我想查询获取不属于userinteressubject的ques4和ques5,因为subject3不是userinterestsubject *
答案 0 :(得分:0)
其中一个解决方案是修改您的数据库体系结构,并且每当用户要求问题直接将其附加到用户时,无论何时您还需要将问题附加到标记。 所以你会有像
这样的东西match(u:user{name:'vartika'})-[:asked]->(q:question) return q.title
另一种解决方案就像是
match(u:user{name:'vartika'})-[rel*1..3]->(q:question) return q.title
但这取决于你知道用户和问题之间路径的长度
编辑: 试试这个
match(u:user{name:'vartika'}) with u Match (q:question) where not (u)<-[:userinteresttag]-()-[:tagofquestion]->(q) return q
您将通过标记
获得与用户无关的所有问题