我有一个查询,该查询将使用节点属性之一为我创建一个双标签。我可以看到如何在Neo4j浏览器中创建标签,但查询仍会加载。
MATCH (n:Disease)
CALL apoc.create.addLabels( id(n), [ n.STY ] ) YIELD node
REMOVE node.STY
RETURN node;
我希望此查询将完成加载。有人可以向我解释为什么这个查询会永远加载吗?有解决办法吗?
答案 0 :(得分:1)
以下是对每个Disease
节点采取的操作:
STY
属性值STY
属性如果有大量Disease
节点,则可能需要很长时间。这里有一些建议。
并且您应该考虑将这样的大型事务分解为多个较小的事务,因为这可以减少数据库服务器所需的资源量。 apoc.periodic.commit可以帮助您。
此外,如果不同的STY
值的数量相对较少,则减少APOC呼叫的数量可能会有所帮助,例如:
MATCH (n:Disease)
WITH n.STY AS sty, COLLECT(n) AS ns
CALL apoc.create.addLabels(ns, [ sty ] ) YIELD node
REMOVE node.STY;
请注意,上面的查询也不会费心返回每个 Disease
节点,因为这可能会导致接收结果的任何问题(例如neo4j Browser无法处理大型结果会及时耗尽,可能会耗尽内存。)