Извлекайте только значения из базы данных neo4j

#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.

  1. Проверьте, обладает ли узел этим свойством, используя EXISTS
  2. Поместите значения в массив с помощью «СОБРАТЬ».
      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]]))