gpt4 book ai didi

neo4j - 从 Neo4j 中的大量节点中删除属性

转载 作者:行者123 更新时间:2023-12-01 11:30:29 24 4
gpt4 key购买 nike

我有 Neo4j 数据库,其中包含数百万个 person 类型的节点,我想删除所有 person 节点的特定属性。我试图通过匹配查询来实现它,但它正在扫描所有节点。

这是我试过的查询。

MATCH (p:Person)
REMOVE p.fatherName

是否有任何其他快速替代此查询,

最佳答案

无法通过 Cypher 提高该查询的性能。

你可以尽量避免没有 fatherName 属性的节点

MATCH (p:Person)
WHERE HAS (p.fatherName)
REMOVE p.fatherName

另外,添加 LIMIT 并多次运行查询也有帮助

MATCH (p:Person)
WHERE HAS (p.fatherName)
WITH p LIMIT 100000
REMOVE p.fatherName

我建议你写Unmanaged Extension用于删除该属性。

例如

Label nodeLabel = DynamicLabel.label("Person");
String propertyName = "fatherName";

try(Transaction tx = database.beginTx()) {
final ResourceIterator<Node> people = database.findNodes(nodeLabel);

for (Node person : IteratorUtil.asCollection(people)) {
if (person.hasProperty(propertyName)) {
person.removeProperty(propertyName);
}
}

tx.success();
}

关于neo4j - 从 Neo4j 中的大量节点中删除属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com