在Neo4j中使用密码对节点名称进行匹配

问题描述 投票:0回答:1

我想知道是否可以通过名称来匹配一个节点。我不想通过属性,标签或连接进行匹配。我想存储一个节点“ Start Time”,并在以后检索它的值。我可以在不分配名称属性的情况下匹配该节点吗?

正在创建查询:

CREATE (Start Time:timestamp {name: "Time Stamp", time: 0239213021312 })

工作匹配查询:

"MATCH (n: timestamp {name:'Time Stamp'})

我也可以查询该节点吗?

创建查询:

CREATE (Start Time:timestamp {time: 0239213021312 })
neo4j cypher graph-databases
1个回答
1
投票

[更新]

您可以通过其本机ID查找节点,只要该节点从未被删除,并且您使用生成该ID的相同neo4j数据库实例

当数据库实例创建节点时,该实例将为该节点分配实例当时未使用的本机ID。当数据库实例删除节点时,该实例可以将删除的节点的本机ID分配给以后创建的另一个节点。

假设满足上述条件:

  • 如果节点已经存在,则可以一次获取其本机ID(如下所示),然后在需要它的查询中对本机ID进行硬编码。 (在这种情况下,即使以后删除name属性,本机ID也不会更改。)

    MATCH (startTime:timestamp {name: "Time Stamp"})
    RETURN ID(startTime);
    
  • 您可以在创建节点时获得其本机ID(如下所示),然后在需要它的查询中对它进行硬编码。 (在这种情况下,甚至不需要指定name属性。)

    CREATE (startTime:timestamp {time: 0239213021312})
    RETURN ID(startTime);
    

如果本机ID是123,那么您可以稍后通过以下方式获取节点:

MATCH (n)
WHERE ID(n) = 123
...

另一方面,如果该节点可能被删除,那么它将必须具有一些具有唯一值的属性,您可以查询该属性。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.