2016-05-27 1 views
0

マップをプロパティとして追加する方法はありますか?私は住所のプロパティ自体の中に住所1、2などを格納したい。これに似たノードまたは関係にプロパティとしてマップを追加する

何か - 私はこの中には、CREATEまたはSETしようとすると、

RETURN {address: {firstline:"a", secondline:"b"}, name:"ABC"} 

は、しかし、それは私にエラーを与えます。

私はこれを試してみました -

create (a:Person {name: "ABC", address: {firstline:"a", secondline:"b"}}) 

エラー - いいえ、ネストされた配列がサポートされていない

Property values can only be of primitive types or arrays thereof 

答えて

1

マップをプロパティとして追加することができます。別のノードとしてAddressを作成し、Personrelationshipを作成する必要があります。あるいは、もちろんPersonからproperty array、例えば、

(a:Person {name: "ABC", address: ["a", "b"]}) 

などのアドレスを追加し、後であなたが最初に望んでいたマップを取得するために戻ってアプリケーションのどこかでその配列に変換する必要があります。

3

あなたは一般のアドレスをモデルになるため、また、グラフで、それは意味がありません。人からの別個のノード。

(person:Person {name:"ABC"})-[:CURRENT_ADDRESS]->(addr:Address {firstLine:"a", secondLine:"b"}) 
0

あなたはJSON文字列へのネストされたマップをシリアライズすることによってこれを行うと、あなたの条件に値がのNeo4jに有効なタイプではない場合

{address:{firstline:"a",secondline:"b"},name:"ABC"} 

はその後にそれを変換し、マップを反復処理であるnode.Ifにプッシュすることができますjson string。つまり、変換します

{firstline:"a",secondline:"b"}==>json string. 

サイファーでは、通常の文字列として機能します。 ノードのデシリアライズプロパティからネイティブオブジェクトにデータを取得するとき。

この手法では、値が通常の文字列かネストされたマップを含むjson文字列かわからないため、すべてのプロパティを逆シリアル化する必要があります。あなたはキーがJSONに変換し、特定のキーなどのノードでこの情報を保持されているか注意してJSON文字列に変換する際に

だから、これに対する私の解決策は、次のとおりです。json_keys=['address'] json_keysでこれらのキーを変換のみ読み込むときアレイ。

1)your map = {address: {firstline:"a", secondline:"b"}, name:"ABC"} 
2)convert to json = {address: '{firstline:"a", secondline:"b"}', name:"ABC"} 
3)note which keys are converted = {address: '{firstline:"a", secondline:"b"}', name:"ABC",json_keys=["address"]} 
+0

こんにちは! Stack Overflowで将来の努力のために[回答の形式(Answering Questions Format)](https://stackoverflow.com/help/how-to-answer)をチェックする方が良いでしょう。 -ありがとうございました – Momin

関連する問題