Если вы удалите метки, которые начинаются с подчеркивания (например, _User
) с этих узлов, и замените их значениями без знака подчеркивания, то вызовы db.schema()
больше не должны возвращать значения.
Вы можетесделать что-то вроде этого ...
MATCH (n:_User)
SET n:User
REMOVE n:_User
Обновлен ответ на основе обратной связи. Вы можете сделать что-то подобное, используя APOC.
// get all labels that start with underscore
CALL db.labels()
YIELD label AS old_label
WHERE old_label STARTS WITH '_'
WITH old_label, substring(old_label, 1, length(old_label)) AS new_label
// match the nodes for one of the underscore labels
MATCH (n)
WHERE old_label IN labels(n)
WITH old_label, new_label, collect(n) AS relabel_nodes
// call removeLabels with the list of nodes and list od labels to remove
CALL apoc.create.removeLabels(relabel_nodes, [old_label])
YIELD node AS removed_label_node
// call addLabels with the new label to add
WITH removed_label_node, new_label
CALL apoc.create.addLabels(removed_label_node, [new_label])
YIELD node AS added_label_node
RETURN added_label_node