Есть ли какой-нибудь Cypher Query для возврата всех свойств узла, но исключая конкретное свойство?

Получение всех свойств определенного узла в Neo4j используется для одного из многих запросов. Но как я могу получить свойства узла, исключая конкретное свойство, метки и идентификатор?

Если этот нижеприведенный запрос выполняется программой Java после успешного подключения:

MATCH (n: `Group_A`: `Topper`) RETURN n

Теперь вывод, который он печатает на экране:

{"id":4, "labels":["Group_A", "Topper"], "name":"tom", "shift":"morning", "salary":"5000", "blood_group":"AB", "specialisation":"C#"}

Я ожидаю все свойства узла (n: Group_A: Topper), за исключением типа свойства и его значения, идентификатора и меток, связанных с узлом. Следовательно, желаемый вывод на экране будет выглядеть так:

{"name":"tom", "shift":"morning", "blood_group":"AB", "specialisation":"C#"}

================================================= ======================= [N.B. - Я работаю с файлом jar Neo4j, где я запускаю запрос Neo4j и получаю результат, используя метод println(). У меня Neo4j работает в фоновом режиме. Все работает нормально с успешным подключением Neo4j, но я ищу запрос Neo4j.]


person Dipcoder    schedule 29.07.2019    source источник


Ответы (2)


[ОБНОВЛЕНО]

Чтобы избежать получения метаданных узла (в результатах вашего клиента), вы не должны возвращать узел напрямую. Вместо этого вы можете использовать СВОЙСТВА(). функция, чтобы получить только свойства на карте:

MATCH (n: `Group_A`: `Topper`)
RETURN PROPERTIES(n) AS props

Но если вы также хотите избежать возврата некоторых свойств (например, зарплаты), вы можете использовать apoc.map.removeKey() для их удаления. Поскольку эта функция возвращает карту вместо узла, она также не будет содержать никаких метаданных (поэтому вам не нужно будет использовать функцию PROPERTIES() в этом случае). Например:

MATCH (n: `Group_A`: `Topper`)
RETURN apoc.map.removeKey(n, 'salary') AS props
person cybersam    schedule 29.07.2019
comment
Спасибо за ваш ответ. Я запускаю код, который вы дали, но у меня есть еще одно условие, чтобы исключить отображение определенного свойства вместе со списком всех свойств, который все еще присутствует в отображаемом выводе. - person Dipcoder; 29.07.2019

Вы можете использовать картографическую проекцию.

Все свойства узла (без метаданных)

MATCH (n: `Group_A`: `Topper`)
RETURN n {.*} 

Особые свойства

MATCH (n: `Group_A`: `Topper`)
RETURN n {.prop1, .prop2} 
person anakornk    schedule 06.07.2020