Как определить тип Enum Neo4j? - PullRequest
       2

Как определить тип Enum Neo4j?

0 голосов
/ 02 февраля 2020

У меня есть узел:

Database: {
  name: 'example',
  description: 'this is the example database'
  type: 'relational'
}

Я хочу, чтобы type было перечислением вроде:

DB_TYPE enum {
  relational
  document
  graph
  other
}

1-й вопрос: Как я могу определить этот тип перечисления, чтобы все узлы «базы данных» могли иметь свойство type, которое является одним из этих 4 значений?

Стоит ли просто оставить его как строку и забыть о создании перечисления?

Я подумал об использовании меток для этих узлов, таких как: :Relational, :Document.

2-й вопрос: Если я должен использовать метки, каков синтаксис шифра, чтобы определить, является ли данный database узел является или реляционным, документом, графиком или другим?

1 Ответ

1 голос
/ 03 февраля 2020
  1. AFAIK, нет способа определить свойство enum для узла. Из того, что вы описали, я думаю, вам лучше использовать ярлыки. Если вы действительно не хотите использовать метки, другой альтернативой может быть наличие одного узла на тип, а затем подключение узлов базы данных к этим типам узлов. Но в зависимости от размера вашего графа узлы этих типов могут стать суперузлами с множеством взаимосвязей. Я бы не предложил такой подход. Опять же, для меня лучшим решением в таких случаях является использование меток.

  2. Самым простым будет проверка меток по labels(a), где a - ваш узел. Например:

MATCH (a) where 'Relational' in labels(a) OR 'Document' in labels(a) ....

Существует также процедура APO C apoc.label.exists, которую можно использовать:

MATCH (a) where apoc.label.exists(a, 'Relational') OR apoc.label.exists(a, 'Document')....


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...