【问题标题】:Replicate Neo4j browser auto-complete function in a cypher statement在密码语句中复制 Neo4j 浏览器自动完成功能
【发布时间】:2015-06-24 14:25:30
【问题描述】:

我正在尝试仅使用密码查询来复制 neo4j 浏览器界面的“自动完成”功能。一个成功的实现意味着如果在浏览器中执行查询,切换自动完成按钮将不起作用,因为所有“附加关系”都在查询中指定。

我使用浏览器对查询进行原型设计,然后使用 RNeo4j 来实现它们。理想情况下,我希望 RNeo4j 结果与浏览器结果相匹配,包括自动完成。

例如,考虑以下查询:

`MATCH p = (n:label1 {name:'tom'})-[r*2..3]-(n:label1 {name:'jerry'})
RETURN p`

在浏览器中,关闭自动完成后,我只得到我所要求的(如预期的那样),而当自动完成打开时,我得到路径上任何节点之间的所有关系,其中两个节点都不是“汤姆”或“杰瑞”。

我尝试使用WITH,然后在第一个MATCH 之后使用第二个MATCH,但这不会产生我需要的结果。

非常感谢任何帮助!

【问题讨论】:

    标签: neo4j cypher r-neo4j


    【解决方案1】:

    自动完成功能再次调用以获取它当前拥有的所有节点 ID 之间的关系

    match a-[r]-b where id(a) in [1,2...] and id(b) in [1,2,3...] return r
    

    【讨论】:

    • 太棒了,这很好用。只是为了完成我上面的示例,这就是我所做的:MATCH p = (n:label1 {name:'tom'})-[r*2..3]-(n:label1 {name:'jerry'}) UNWIND nodes(p) as allnodes WITH COLLECT(ID(allnodes)) AS ALLID MATCH (a)-[r2]-(b) where ID(a) IN ALLID AND ID(b) IN ALLID RETURN rx 现在密码查询返回与浏览器自动完成相同的结果
    猜你喜欢
    • 2019-03-31
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多