2016-10-23 12 views
0

以下は、パラメータ化されたリストで述べたように各関係型に対して繰り返される暗号化クエリであり、各関係型は接続ノードに追加される特定のプロパティおよび値を有する。 neo4jによれば、関係タイプをパラメータ化することはできません。とにかくサイファーを使ってこれに対処するのですか?またはapocで?パラメータ化されたneo4j暗号化クエリの実行

Merge(n_device: Device{identifier: {deviceId}}) ON CREATE SET n_device.created=timestamp() 
WITH n_device 
OPTIONAL MATCH (n_device)-[r_prev:{deviceRel}{active:true}]->() 
WITH n_device, r_prev 
Merge(n_deviceOs: Device{{deviceRelProp}: {deviceRelPropVal}}) ON CREATE SET n_deviceOs :DeviceOs, n_deviceOs.created=timestamp(), n_deviceOs.newNode=true 
WITH n_device, n_deviceOs, r_prev 
Merge (n_device)-[r_cur:{deviceRel}]->(n_deviceOs) ON CREATE SET r_cur.active=true, r_cur.created=timestamp() 
WITH n_deviceOs, r_prev 
Match(n_deviceOs) where n_deviceOs.newNode=true set r_prev.active = false, r_prev.modified=timestamp() 
REMOVE n_deviceOs.newNode 

"params": { 
    "deviceId": "1234", 
    "deviceRel": ["HAS_DEVICE_OS", "HAS_DEVICE_OSINFO", "HAS_DEVICE_MODEL", "HAS_DEVICE_APPVERSION"], 
    "deviceRelProp": ["os", "osinfo", "model", "version"], 
    "deviceRelPropVal": ["android", "kitkat", "samsung", "1.64.2"] 
} 

答えて

1

Neo4jは、パラメータ化された型との関係を作成できません。しかし、これを可能にするAPOC手順があります。 creating data sectionを参照してください。apoc.create.relationship()は、探しているプロシージャです。

+0

私は、関係を作成するためにそれを参照してください。上記のクエリが表示された場合は、node-relationship-nodeの照合にも必要です。私はそれのためにapocで1つを見ません。 – Kartlee

+1

ネイティブのCypherで、 'MATCH(n_device) - [r_prev {active:true}] - >()WHERE TYPE(r_prev)= {deviceRel}'(または2回目のマッチで同じフィルター)を実行できます。 –

+0

ありがとう、私はあなたが言及したようにアプローチに従った。リストを送信し、リストの各値に対してクエリをパラメータ化することは可能ですか? neo4jが容易にサポートしない場合、apocを実行することは可能ですか? – Kartlee

関連する問題