Как я могу вернуть все свойства для node с помощью Cypher?

Я понимаю, что можно использовать символ подстановки (*) для возврата всех ссылок в запрос Cypher, например:

MATCH p:Product WHERE p.price='1950' RETURN *;

  ==> +----------------------------------------------------------------+
  ==> | p                                                              |
  ==> +----------------------------------------------------------------+
  ==> | Node[686]{title:"Giorgio Armani Briefcase",price:"1950",...    |
  ==> +----------------------------------------------------------------+

Однако результатом является строка с единственным столбцом node 'с именем "p", из которого можно получить доступ к свойствам. Однако я хотел бы, чтобы в результирующих "строках" имена свойств назывались "столбцами". Что-то вроде:

MATCH p:Product WHERE p.price='1950' RETURN p.*;

  ==> +-------------------------------------------+
  ==> | title | price | ...                       |
  ==> +-------------------------------------------+
  ==> | "Giorgio Armani Briefcase" | "1950" | ... |
  ==> +-------------------------------------------+

Этот конкретный запрос недействителен, но есть ли способ достичь того же результата (не перечисляя все свойства явно, как в p.title, p.price, p...)?

Ответы

Ответ 1

Вы еще не можете сделать это в Cypher. Я думаю, что это была бы приятная функция, если вы хотите ее запросить.

Изменить (спасибо за комментарий, указав это): Теперь вы можете сделать это с 2.2:

MATCH (p:Product) WHERE p.price='1950' RETURN keys(p);

Ответ 2

В последней версии cypher properties(n) будут возвращены все ключи и свойства node. Кажется, работает только для одного node.

Я надеюсь, что это поможет людям.

Ответ 3

Просто для того, чтобы расширить доступ к клавишам:

MATCH (p:product) WITH DISTINCT keys(p) AS keys
UNWIND keys AS keyslisting WITH DISTINCT keyslisting AS allfields
RETURN allfields;

Ответ 4

Вы можете использовать предложение "как" и определить каждое свойство и то, что вы хотите назвать столбцом. Вам нужно будет идентифицировать каждое свойство, которое вы хотите вернуть индивидуально, хотя.

Пример:

MATCH p.product where WHERE p.price='1950' RETURN p.price as price, p.title as title, p.whatever, as anythingYouWant

Ответ 5

Вы можете вернуть n в ваш запрос cypher, он вернет все ключи и свойства node. например.: MATCH (n:People) n
Это вернет н:
{ "Date_of_Birth": "1981-04-23 00:00:00", "Employee_Last_Name": "Aaaa", "Employee_First_Name": "Baaa", "Age": 36, "Employee_Status": "Active" }

Ответ 6

Я новичок в cypher, но кажется, что это возвращает все ключи для определенного типа node:

MATCH (p:product) RETURN keys(p)

Работает в Neo4J 3.0.