【问题标题】:How to get node's id with cypher request?如何通过密码请求获取节点的 ID?
【发布时间】:2014-11-29 23:07:32
【问题描述】:

我正在使用 neo4j 并执行此查询:

MATCH (n:Person) RETURN n.name LIMIT 5

我正在获取名称,但我也需要 ID。 请帮忙!

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    由于 ID 不是属性,因此使用 ID 函数返回。

    MATCH (n:Person) RETURN ID(n) LIMIT 5
    

    【讨论】:

    • 感谢您的快速响应:)(这是正确的)
    • +subvertallchris 有没有办法在哈希映射中映射返回值,因为这种方式的响应只是一个数组;现在:[4, 'George'] 我想要它:{ id: 4, name: 'George' }
    • 实际上,您会这样做。 MATCH (n:Person) RETURN { id: ID(n), name: n.name } as user LIMIT 5
    • @subvertallchris 如果节点有一百个属性或在查询时未知的属性(因为没有模式),这将没有用。有没有办法返回具有额外计算属性的节点,但将整个节点重构为 RETURN 子句中的节点文字?
    • 这里的人要小心!在某些 3rd 方数据库中,您永远不应该使用 id 的节点作为参考。如果节点被删除,下一个创建的节点会重用您刚刚删除的节点的旧 ID 值(因为它现在是免费的)。这给您留下了一个悬空引用。在此处阅读更多信息 (neo4j.com/blog/dark-side-neo4j-worst-practices)
    【解决方案2】:

    不确定这有多大帮助或相关性,但是当我使用 NodeJS API 时,从 Cypher 查询返回的记录对象具有与属性对象相同级别的身份字段(例如 record.get(0).properties , 记录.get(0).identity)。我假设您不只是在执行简单的 Cypher 查询,并且实际上使用驱动程序来发送查询 - 所以您可能不必运行另一个 MATCH 语句。

    我知道 OP 专门询问了 Cypher - 但它可能对偶然发现此问题的其他用户有所帮助。

    【讨论】:

      【解决方案3】:

      或者你可以看看Neo4j Cypher Refcard

      您可以简要了解许多可以编写的函数和模式。

      更多关于The Neo4j Developer Manual - Chapter 3. Cypher - 3.4. Functions上的功能

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-16
        • 2021-10-11
        • 1970-01-01
        • 2019-03-05
        • 2012-05-10
        • 1970-01-01
        • 1970-01-01
        • 2015-12-19
        相关资源
        最近更新 更多