web-dev-qa-db-ja.com

Cypherを使用してノードのすべてのプロパティを返すにはどうすればよいですか?

ワイルドカード(*)記号を使用して、Cypherクエリ内のすべての参照を返すことが可能であることを理解しています。

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

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

ただし、結果は「p」という名前の単一のノード「列」を持つ行になり、そこからプロパティにアクセスできます。ただし、結果セットの「行」にプロパティ名を「列」にしたいと考えています。何かのようなもの:

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

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

その特定のクエリは有効ではありませんが、同じ結果を達成する方法はありますか(p.title、p.price、p ...のように、すべてのプロパティを明示的にリストする以外に)?

22
DavidJ

まだCypherでこれを行うことはできません。あなたがそれを要求したいのであれば、それは素晴らしい機能だと思います。

編集(コメントを指摘してくれてありがとう):2.2以降でこれを実行できます。

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

サイファーの最新バージョンでは、properties(n)はノードのすべてのキーとプロパティを返します。ただし、単一ノードでのみ機能するようです。

これが人々の役に立つことを願っています。

11
SStanley

鍵の取得を拡張するだけです。

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

サイファークエリでnを返すことができます。ノードのすべてのキーとプロパティが返されます。例:MATCH (n:People) n
これは戻ります
n:
{ "Date_of_Birth": "1981-04-23 00:00:00", "Employee_Last_Name": "Aaaa", "Employee_First_Name": "Baaa", "Age": 36, "Employee_Status": "Active" }

3
Ravindra Gupta

'as'句を使用して、各プロパティと列に付ける名前を指定できます。ただし、個別に返したい各プロパティを識別する必要があります。

例:

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

私は暗号に不慣れですが、これは特定のタイプのノードのすべてのキーを返すようです:

MATCH (p:product) RETURN keys(p)

Neo4J 3.0で動作します。

0
Charla Kunkel