Neo4j - 为什么所有节点的 uuid 都为空,但数据库一直在为它们编制索引并尝试在搜索期间使用它们?
Neo4j - Why uuid is null for all nodes but the database keeps indexing them and attempts to use them during searches?
这里简单描述一下问题:
irb(main):001:0> b = Bisac.first
CYPHER 268ms MATCH (n:`Bisac`) RETURN n ORDER BY n.uuid LIMIT {limit_1} | {:limit_1=>1}
=> #<Bisac uuid: nil, bisac_code: "MUS037050", bisac_value: "MUSIC / Printed Music / Mixed Collections">
索引如下:
ON :Author(uuid) ONLINE (for uniqueness constraint)
ON :Author(author_name) ONLINE (for uniqueness constraint)
ON :Bisac(uuid) ONLINE (for uniqueness constraint)
ON :Bisac(bisac_code) ONLINE (for uniqueness constraint)
ON :Country(country_name) ONLINE (for uniqueness constraint)
ON :Country(uuid) ONLINE (for uniqueness constraint)
ON :Description(uuid) ONLINE (for uniqueness constraint)
ON :Language(iso_639_2_code) ONLINE (for uniqueness constraint)
ON :Language(uuid) ONLINE (for uniqueness constraint)
ON :Publisher(uuid) ONLINE (for uniqueness constraint)
ON :Publisher(publisher_name) ONLINE (for uniqueness constraint)
ON :Region(region_name) ONLINE (for uniqueness constraint)
ON :Region(uuid) ONLINE (for uniqueness constraint)
ON :Woka(woka_title) ONLINE
ON :Woka(uuid) ONLINE (for uniqueness constraint)
ON :Woka(woka_id) ONLINE (for uniqueness constraint)
能不能把这些uuid改成not null值,好像很有用?
所有数据均从 CSV 文件加载。
uuid 上的所有索引都是在 Rails 控制台上第一次从 Ruby 访问数据时创建的,语句如下:b = Bisac.first,或 a = Auhtor.first,等等。
由于 Neo4j ID 可以回收,ActiveNode
需要每个模型上的 属性 是唯一的。默认为 uuid
,但您可以使用 id_property
方法自行选择。
如果您想填充该字段,这里有一个用于设置 uuid 的迁移工具:
https://github.com/neo4jrb/neo4j/wiki/Neo4j-v3-Migrations
但基本上字段是使用 Ruby 的 SecureRandom.uuid
设置的。您也可以使用自己的查询在数据库中自己执行此操作,或者如果您能够使用 LOAD CSV
重建数据库,则可以将其作为列添加到 CSV 文件中
这里简单描述一下问题:
irb(main):001:0> b = Bisac.first
CYPHER 268ms MATCH (n:`Bisac`) RETURN n ORDER BY n.uuid LIMIT {limit_1} | {:limit_1=>1}
=> #<Bisac uuid: nil, bisac_code: "MUS037050", bisac_value: "MUSIC / Printed Music / Mixed Collections">
索引如下:
ON :Author(uuid) ONLINE (for uniqueness constraint)
ON :Author(author_name) ONLINE (for uniqueness constraint)
ON :Bisac(uuid) ONLINE (for uniqueness constraint)
ON :Bisac(bisac_code) ONLINE (for uniqueness constraint)
ON :Country(country_name) ONLINE (for uniqueness constraint)
ON :Country(uuid) ONLINE (for uniqueness constraint)
ON :Description(uuid) ONLINE (for uniqueness constraint)
ON :Language(iso_639_2_code) ONLINE (for uniqueness constraint)
ON :Language(uuid) ONLINE (for uniqueness constraint)
ON :Publisher(uuid) ONLINE (for uniqueness constraint)
ON :Publisher(publisher_name) ONLINE (for uniqueness constraint)
ON :Region(region_name) ONLINE (for uniqueness constraint)
ON :Region(uuid) ONLINE (for uniqueness constraint)
ON :Woka(woka_title) ONLINE
ON :Woka(uuid) ONLINE (for uniqueness constraint)
ON :Woka(woka_id) ONLINE (for uniqueness constraint)
能不能把这些uuid改成not null值,好像很有用? 所有数据均从 CSV 文件加载。 uuid 上的所有索引都是在 Rails 控制台上第一次从 Ruby 访问数据时创建的,语句如下:b = Bisac.first,或 a = Auhtor.first,等等。
由于 Neo4j ID 可以回收,ActiveNode
需要每个模型上的 属性 是唯一的。默认为 uuid
,但您可以使用 id_property
方法自行选择。
如果您想填充该字段,这里有一个用于设置 uuid 的迁移工具:
https://github.com/neo4jrb/neo4j/wiki/Neo4j-v3-Migrations
但基本上字段是使用 Ruby 的 SecureRandom.uuid
设置的。您也可以使用自己的查询在数据库中自己执行此操作,或者如果您能够使用 LOAD CSV
重建数据库,则可以将其作为列添加到 CSV 文件中