如何在cypher
中执行匹配in子句e.g。我想找一些带有ID 1,2或3的电影。
match (m:movie {movie_id:("1","2","3")}) return m
如果您违反自动索引,则语法为
START n=node:node_auto_index('movie_id:("123", "456", "789")')
这与匹配条款的区别
答案 0 :(得分:4)
你的想法是:
MATCH (m:movie)
WHERE m.movie_id in ["1", "2", "3"]
但是,这不会使用2.0.1中的索引。这是新标签索引中缺少的功能,我希望很快就能解决。 https://github.com/neo4j/neo4j/issues/861
答案 1 :(得分:0)
我找到了一个(有点难看)临时解决方法。
以下查询未使用Person(name)上的索引:
匹配(p:Person)... ['JOHN','BOB']中的p.name返回...;
所以一个选择是重复整个查询n次:
匹配(p:Person)...其中p.name ='JOHN'返回... 联盟 匹配(p:Person)...其中p.name ='BOB'返回...
如果这是不合需要的,那么另一个选择是重复id n次的小查询:
匹配(p:Person)其中p.name ='JOHN'返回id(p) 联盟 match(p:Person)其中p.name ='BOB'返回id(p);
然后使用第一个结果执行第二个查询:
匹配(p:Person)... [8,16,75,7]中的id(p)返回...;
有没有办法将这些组合成一个查询?联合可以嵌套在另一个查询中吗?