2013-05-08 223 views
0

作为我之前question的后续,我想知道如何在执行索引查询时使用逻辑运算符AND,OR和NOT。带逻辑运算符的Cypher查询

使用相同的读书俱乐部的数据库的情况会是什么暗号查询的样子:

  1. 查找已经阅读(小说非小说类)OR参考书所有的读者?
  2. 查找所有读过的读者(小说非小说类)而不是参考书?

我敢肯定,这两个例子应该提供足够的材料来覆盖任何其他情况。

编辑:我创建了一个Neo4j Console场景来演示这一点。

回答

0

对于你的第一个用例,你可以试试这个。其次可以依样画葫芦地做 -

start b1=node:MyBookIndex('Genre:Fiction'), 
     b2=node:MyBookIndex('Genre:Non-Fiction'), 
     b3=node:MyBookIndex('Genre:Reference') 
match b1-[a?:HasRead]-r, 
     b2-[b?:HasRead]-r, 
     b3-[c?:HasRead]-r 
where (a <> null and b <> null) or (c <> null) 
return r.ReaderName 

(注:未测试)

+0

我得到使用Neo4j的Web管理控制台的数据浏览器选项卡执行查询下面这并不工作: >无效查询 >现在不支持此模式。这些模式元素是多个双重可选路径的一部分,这是不允许的。 r1,F,r2 – 2013-05-08 17:59:35

+0

请注意,在我以前的评论中提到的''r1,F,r2''是来自使用我的数据的测试。使用@ Gopi回复中的示例,您会看到'“a,r,b”'。 – 2013-05-08 18:08:11