Neo4j cypher 2.0:使用基于标签的索引搜索一组节点
我有Neo4j cypher 2.0:使用基于标签的索引搜索一组节点,neo4j,cypher,Neo4j,Cypher,我有用户和组。 我有一个索引n:组(名称) 我想搜索属于一组组的所有用户:[“gr1”、“gr2”、“gr3”] 他们属于哪些其他群体 因此,我有以下疑问: 查询: (用“=”代替“in”,我没有得到任何错误) 我正在使用neo4j enterprise 2.0.1。测试结果是在neo4j浏览器上运行的。当您在模式中指定attrib如(gr:Group{name:“gr1”})中所示时,或者调用其中gr.name=“gr1”时,将引用索引。在可能有多个attrib值的情况下,可以使用或子句 MA
用户
和组
。
我有一个索引n:组(名称)
我想搜索属于一组组的所有用户:[“gr1”、“gr2”、“gr3”]
他们属于哪些其他群体
因此,我有以下疑问:
查询:
(用“=”代替“in”,我没有得到任何错误)
我正在使用neo4j enterprise 2.0.1。测试结果是在neo4j浏览器上运行的。当您在模式中指定attrib如
(gr:Group{name:“gr1”})中所示时,或者调用其中gr.name=“gr1”
时,将引用索引。在可能有多个attrib值的情况下,可以使用或子句
MATCH (gr:Group) <--(us:User)--(gr2:Group)
WHERE gr.name="gr1" OR gr.name="gr2"
return distinct gr2
MATCH(gr:Group)我需要使用参数进行查询,这意味着我要将组名数组传递给查询。在neo 1.9中,我至少可以从一组节点(由参数给出)开始。在2.0中没有办法做到这一点吗?(我可以通过向or语句中添加更多可能的值来动态创建您提到的字符串,但这有点遗漏了要点。)不幸的是,目前还不可能做到这一点。您可以在{names}
中使用gr.name,但这不会使用索引,只有在只有几个:组节点时才有意义。
中的尚不支持对标签属性进行索引查找,对此表示抱歉。
MATCH (gr:Group) <--(us:User)--(gr2:Group)
WHERE gr.name = "gr1"
return distinct gr2
MATCH (gr:Group) <--(us:User)--(gr2:Group)
WHERE gr.name in ["gr1"]
return distinct gr2
MATCH (gr:Group) <--(us:User)--(gr2:Group)
using index gr:Group(name)
WHERE gr.name in ["gr1"]
return distinct gr2
Cannot use index hint in this context. The label and property comparison must be specified on a non-optional node
Label: `Group`
Property name: `name`
MATCH (gr:Group) <--(us:User)--(gr2:Group)
WHERE gr.name="gr1" OR gr.name="gr2"
return distinct gr2