Подтвердить что ты не робот

Neo4j как удалить все ограничения

Есть ли команда cypher для удаления всех ограничений?

Я знаю, что могу отказаться от определенных ограничений.

DROP CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE

Однако я хочу очистить все ограничения как часть слежения после тестирования. Не могу найти что-либо в документах, но что-то вроде:

DROP CONSTRAINT *

Обновление: моя настройка тестирования.

Написание крошечного клиентского узла nodejs cypher. Я хочу проверить определение уникальных индексов в коде приложения.

4b9b3361

Ответ 1

Вы можете получить список всех индексов и ограничений с помощью запросов GET до http://localhost:7474/db/data/schema/constraint/ и http://localhost:7474/db/data/schema/index. Вот как я это делаю в Ruby, может быть, это даст вам представление о том, как сделать то же самое в Node.

c.after(:all) do
  conn = Faraday.new(url: "http://localhost:7474")
  response = conn.get('/db/data/schema/constraint/')
  constraints = JSON.parse(response.body)
  constraints.each do |constraint|
    Neo4j::Session.query("DROP CONSTRAINT ON (label:`#{constraint['label']}`) ASSERT label.#{constraint['property_keys'].first} IS UNIQUE")
  end 

  response = conn.get('/db/data/schema/index/')
  indexes = JSON.parse(response.body)
  indexes.each do |index|
    Neo4j::Session.query("DROP INDEX ON :`#{index['label']}`(#{index['property_keys'].first})")
  end
end

Ответ 2

Обратите внимание, используя APOC вы можете удалить все индексы и ограничения с помощью CALL apoc.schema.assert({}, {}).

Ответ 3

Единственный способ сбросить ограничения - это сделать это на уровне ограничения. Вы можете использовать, например. :schema в браузере Neo4j, чтобы получить список всех ограничений. Я просто написал короткий script для этого.

Ответ 4

Вот как я это делаю в Python:

    s = connection.get_session()

    # Drop constraints / indices
    for constraint in s.run("CALL db.constraints"):
        s.run("DROP " + constraint[0])

Чувствует себя немного нехорошо, я чувствую, что ограничения должны быть лучше поддерживаемой.