Добавить ограничения для узла neo4j на основе значения свойства узла - PullRequest
0 голосов
/ 29 мая 2020

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

Я могу создать ограничение, в котором должно существовать поле foo на Entity с

CREATE CONSTRAINT ON (e:Entity) ASSERT EXISTS (e.foo)

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

CREATE CONSTRAINT ON (e:Entity {constrain_flag:true) ASSERT EXISTS (e.foo)

Например, у меня может быть два узла, например

(e:Entity { foo: 'bar' , constrain_flag: true }) и

(e:Entity { constrain_flag: false })

Мне нужно только ограничение, которое должно существовать e.foo, применимо к Entity, где constrain_flag = true, поэтому оба из них должны быть разрешены. Однако

(e:Entity { constrain_flag: false }) должен вызвать исключение.

Есть ли способ сделать это в настоящее время с помощью cypher и neo4j?

Заранее спасибо!

1 Ответ

0 голосов
/ 29 мая 2020

Вместо добавления свойства флага вы можете просто добавить дополнительную метку (скажем, ConstrainedEntity) к Entity узлам, которые должны быть ограничены. Запросы могут продолжать использовать только метку Entity.

Например:

CREATE CONSTRAINT ON (ce:ConstrainedEntity) ASSERT EXISTS (ce.foo)

Чтобы создать «помеченный» Entity:

CREATE (e:Entity:ConstrainedEntity {id: 111, foo: 'bar'})

Кому «пометить» существующий Entity:

MATCH (e:Entity)
WHERE e.id = 123
SET e:ConstrainedEntity
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...