Краткое описание задачи: мне нужно получить последний элемент массива / списка одного из полей во вложенном JSON, здесь входной файл JSON:
{
"origin": [{
"label": "Alcohol drinks",
"tag": [],
"type": "string",
"xpath": []
},
{
"label": "Wine",
"tag": ["red", "white"],
"type": "string",
"xpath": ["Alcohol drinks"]
},
{
"label": "Port wine",
"tag": ["Portugal", "sweet", "strong"],
"type": "string",
"xpath": ["Alcohol drinks", "Wine"]
},
{
"label": "Sandeman Cask 33",
"tag": ["red", "expensive"],
"type": "string",
"xpath": ["Alcohol drinks", "Wine", "Port wine"]
}
]
}
Мне нужно получить последний элементполя "xpath", чтобы создать связь с соответствующей меткой.Вот код, который создает соединение со всеми элементами, упомянутыми в «xpath», мне нужно просто подключиться к последнему:
WITH "file:///D:/project/neo_proj/input.json" AS url
CALL apoc.load.json(url) YIELD value
UNWIND value.origin as or
MERGE(label:concept{name:or.label})
ON CREATE SET label.type = or.type
FOREACH(tagName IN or.tag | MERGE(tag:concept{name:tagName})
MERGE (tag)-[r:link]-(label)
ON CREATE SET r.Weight=1
ON MATCH SET r.Weight=r.Weight+1)
FOREACH(xpathName IN or.xpath | MERGE (xpath:concept{name:xpathName})
MERGE (label)-[r:link]-(xpath))
Возможно, есть что-то вроде:
apoc.agg.last(or.xpath)
который возвращает только массив массивов или все «xpath» из всех 4 записей «origin».
Буду признателен за любую помощь, возможно, есть некоторые обходные пути (не обязательные, как я предлагал) для решения этой проблемы.Заранее спасибо!
NB. Все это должно быть сделано из приложения, а не из браузера Neo4j.