2016-10-25 14 views
4

オブジェクトの配列をプロパティとしてノードに挿入しようとしています。私はfollwingエラー::neo4jにオブジェクトの配列をプロパティとして挿入

Property values can only be of primitive types or arrays thereof 

でも私はネストされた配列にしようとしたために何を、上記のように私に同じエラーを与えた取得しています実行した場合、私は

MERGE (ss:Label1 {sId: 12345}) 
    ON MATCH SET ss.id = 14770746012, ss.setC = 1,ss.nl = [{id: 24, status: 0}] 
    ON CREATE SET ss.id = 14770746012, ss.setC = 1,ss.nl = [{id: 24, status: 0}] 

を試してみました。

私はのNeo4jは私の要件を達成するためにどのように

「プロパティ値のネスト」をサポートすることができないのNeo4jのドキュメントで研究?

答えて

3

のNeo4jは、階層的性質、この問題を解決するための方法のいずれかをサポートしていないとして - 追加ノードを作成するには:

MERGE (ss:Label1 {sId: 12345, id: 14770746012, setC: 1 }) 
MERGE (nl:Props:nlProp {id: 24, status: 0}) 
MERGE (ss)-[:hasProps]->(nl) 
2

stdob--で述べたように、あなたの必要性は、それらを使用する場合、あなたは追加のノードを作成することができますがクエリのプロパティ(フィルタリング、集約など)

しかし、あなたはちょうどあなたがJSONとして例えば、それをシリアル化することができ、データを読み書きしたいが、クエリで、それに基づいて行動されていない場合:

MERGE (ss:Label1 {sId: 12345}) 
    ON MATCH SET ss.id = 14770746012, ss.setC = 1,ss.nl = ["{\"id\": 24, \"status\": 0}"] 
    ON CREATE SET ss.id = 14770746012, ss.setC = 1,ss.nl = ["{\"id\": 24, \"status\": 0}"] 
+1

[APOC](https://neo4j-contrib.github.io/neo4j-apoc-procedures/)の手順 'apoc.convert.toJson'を使用してJSONのシリアル化を行うことができます。 – cybersam

0

別のオプションは、nlコレクションを分割することです各要素プロパティの個別のコレクションに追加します。たとえば:

MERGE (ss:Label1 {sId: 12345}) 
SET ss.id = 14770746012, ss.setC = 1, ss.nl_ids = [24], ss.nl_statuses: [0]; 

nl_idsnl_statuses値が同じインデックスを持って対応します。別に

:あなたのON MATCH SET ...ON CREATE SET ...アクションはまったく同じなので、私は1つだけSET ...句にそれらを組み合わせます。

関連する問題