我正在尝试搜索所有索引上的关键字。我有我的图数据库。
以下是查询:
start n=node:Users(Name="Hello"),
m=node:Location(LocationName="Hello")
return n,m
我正在获取节点,如果两个索引(用户和位置)中都存在关键字“Hello”,并且如果任何一个索引中都没有关键字Hello
,则不会得到任何结果。< / p>
请您告诉我如何修改此密码查询,以便在任何索引键(Name或LocationName)中出现“Hello”时获得结果。
答案 0 :(得分:1)
在2.0中你可以使用UNION并有两个单独的查询:
start n=node:Users(Name="Hello")
return n
UNION
start n=node:Location(LocationName="Hello")
return n;
您编写查询的方式的问题是它计算n
和m
之间的对的笛卡尔积的方式,因此如果n
或m
不是没发现,没有找到结果。如果找到一个n
,并且找到了两个m
,则会得到2个结果(重复n
)。与FROM子句在SQL中的工作方式类似。如果你有一个名为empty
的空表,并且你select * from x, empty;
那么你将得到0结果,除非你做某种外连接。
不幸的是,在1.9中这样做有点困难。我已经尝试了许多迭代的事情,比如WITH collect(n) as n
等等,但不管是什么,它都归结为笛卡尔积的东西。