#reactjs #neo4j
Вопрос:
Я пытаюсь извлечь некоторые данные из моей базы данных neo4j и отобразить в списке для автоматического предложения в приложении reactjs. У меня есть следующие коды для получения данных.
let result = null;
try {
result = await session.run(
'MATCH (n:Person) RETURN properties(n)',
)} finally {
await session.close()
}
await driver.close()
Здесь узлы Person имеют разные свойства, т. е. Все узлы Person не имеют одинаковых свойств. у некоторых есть имя редактора, у других-имя автора. Что я хочу сделать, так это получить только значения без ключей и назначить их в массиве. здесь
'MATCH (n:Person) RETURN properties(n)'
ВОЗВРАТ
{
"myName": "myname 1",
"hisName": "myname 2"
}
{
"herName": "myname 3",
"theirName": "myname 4"
}
И 'MATCH (n:Person) RETURN keys(n)'
возвращается
["myName"]
["hisName"]
["herName"]
["theirName"]
Но я хочу получать только значения [имя 1, имя 2, имя 3, имя 4]
Не могли бы вы, пожалуйста, сказать мне, как получать только ценности ? Также как сохранить эти значения в массиве ?
Комментарии:
1. Проверьте, существует ли этот ключ свойства (мое имя), затем выполните «сбор», чтобы поместить их в массив.
Ответ №1:
Вот как получить все значения для ключа myName в классе Person.
- Проверьте, обладает ли узел этим свойством, используя EXISTS
- Поместите значения в массив с помощью «СОБРАТЬ».
MATCH (n:Person) WHERE EXISTS(n.myName) RETURN collect(distinct n.myName)
Примерный результат:
[«Жень», «Правина», «Майкл», «Арья», «Карин», «Адам», «Джон», «Мэри», «джек», «дэвид», «том»]
Ответ №2:
Это сработает.
MATCH(n:Person)
RETURN apoc.coll.flatten(COLLECT(EXTRACT(key IN keys(n) | n[key])))
p.s. Извините, функция EXTRACT() устарела. Ниже лучше.
MATCH(n:Shima)
RETURN apoc.coll.flatten(COLLECT([key IN keys(n) | n[key]]))