Как получить данные из свойства с помощью документа JSON, встроенного с помощью Cypher - PullRequest
0 голосов
/ 24 сентября 2019

У меня следующий случай: у меня есть информация, хранящаяся в Neo4j.Одно свойство хранит документ JSON, и я хотел бы получить информацию внутри этого документа JSON.Я получил данные, даже поле JSON, используя MATCH:

MATCH (n: Node) RETURN n.id, n.nodeInfo как JSONInfo

JSONInfo (который является свойством Node), имеет информацию JSON:

{"TIMESTAMP": "2018-03-11T04: 58: 24Z", "field1": "358716053191804", "field2": "732111149743974", "version_field", "3.9.1 "" field3 ":" 0 "," field4 ":" 0 "}

Но я просто хочу получить field1 со свойством JSON внутри.

Каков наилучший способ получить это поле в команде MATCH?

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

1 Ответ

1 голос
/ 24 сентября 2019

Прежде всего, ваш пример не является допустимым JSON.Ваш ключ и значение version_field должны быть разделены двоеточием, а не запятой, и вам нужно запятую после «3.9.1».

{ "TIMESTAMP":"2018-03-11T04:58:24Z", "field1":"358716053191804", "field2":"732111149743974", "version_field":"3.9.1", "field3":"0", "field4":"0" }

После того, как это исправлено, и поле является допустимым JSON,Вы можете использовать функции преобразования JSON из процедур APOC , чтобы выполнить преобразование объекта JSON в карту, а затем просто использовать точечную запись для доступа к свойствам карты:

MATCH (n:Node)
RETURN apoc.convert.fromJsonMap(n.nodeInfo).field1 as field1

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

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