在不复制字段的情况下创建节点并为其设置 ID
Creating node and set ID for it without duplicating field
我用给定的 id 创建了一个节点,
create (n:Entry) set n.id=1111
但是数据库在节点中创建了两个字段id,一个是默认的,一个是我自己创建的。
请问如何在不生成两个相似字段“id”的情况下,在创建时为节点设置id?
提前致谢。
您看到的两个值是
- Neo4j的内部节点标识符
id(n)
,这里12
和
- 属性
n.id
,此处1111
。
您可以从 Cypher 中访问它们,取消上面显示的语法,
MATCH (n:Entry) RETURN id(n), n.id
产量:
id(n)
n.id
12
1111
您无法从Cypher更改内部ID,它是在系统创建节点时分配的。我知道控制哪个节点获得哪个内部 ID 的唯一方法(你永远不必这样做,重新考虑你的软件设计!)是使用 Neo4j Admin Import 工具和 --id-type=ACTUAL
选项。但是,这仅适用于批量导入到先前空数据库中的节点。
我用给定的 id 创建了一个节点,
create (n:Entry) set n.id=1111
但是数据库在节点中创建了两个字段id,一个是默认的,一个是我自己创建的。
请问如何在不生成两个相似字段“id”的情况下,在创建时为节点设置id? 提前致谢。
您看到的两个值是
- Neo4j的内部节点标识符
id(n)
,这里12
和 - 属性
n.id
,此处1111
。
您可以从 Cypher 中访问它们,取消上面显示的语法,
MATCH (n:Entry) RETURN id(n), n.id
产量:
id(n) |
n.id |
---|---|
12 |
1111 |
您无法从Cypher更改内部ID,它是在系统创建节点时分配的。我知道控制哪个节点获得哪个内部 ID 的唯一方法(你永远不必这样做,重新考虑你的软件设计!)是使用 Neo4j Admin Import 工具和 --id-type=ACTUAL
选项。但是,这仅适用于批量导入到先前空数据库中的节点。