Neo4j: невозможно создать узел с вложенными свойствами - PullRequest
0 голосов
/ 24 сентября 2018

Я искал везде, но не могу найти ответ на этот вопрос.

Мне нужно создать узел Config, который имеет объект динамических свойств с 2 парами ключ / значение (например, nameи type).Ключи, при запросе, должны заканчиваться как properties.name и properties.type.Но я не могу понять правильный синтаксис создания.Вот что я делаю:

CREATE (c1:Config) set c1.properties=[{name:"CiPipelineConfig1"}, {type:"test"}]

Но это вызывает у меня странную ошибку:

Neo.ClientError.Statement.TypeError: Neo4j only supports a subset of Cypher types for storage as singleton or array properties.

Может кто-нибудь помочь мне разобраться в этом вопросе?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Одним из способов создания вложенных свойств является использование свойства JSON в качестве строкового свойства. Вы можете выгружать и кодировать данные при записи, а также загружать и декодировать при чтении.
Одним из примеров этого является свойство neomodel json в python.

Это код свойства jom neomodel:

class JSONProperty(Property):
    """
    Store a data structure as a JSON string.

    The structure will be inflated when a node is retrieved.
    """
    def __init__(self, *args, **kwargs):
        super(JSONProperty, self).__init__(*args, **kwargs)

    @validator
    def inflate(self, value):
        return json.loads(value)

    @validator
    def deflate(self, value):
        return json.dumps(value)
0 голосов
/ 24 сентября 2018

Neo4j имеет ограниченный тип свойства set.

Вы должны хранить значения как свойства узла, а не объединять их в одно свойство.

// You need the `` around the property name to escape the period
CREATE (c1:Config) set c1.`properties.name`="CiPipelineConfig1" set c1.`properties.type`="test"

Если это не достаточно хорошо для вас, вам нужно будет переформатировать ваши данные в нечто, совместимое с типами Neo4j.

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