0
HTTPエンドポイントを介してNeo4j 2.3.7データベースに何千ものアークを追加したいとします。Transactional Cypher HTTPエンドポイントで多数のアークを追加する
これを達成するための合理的に速い方法は何でしょうか?
HTTPエンドポイントを介してNeo4j 2.3.7データベースに何千ものアークを追加したいとします。Transactional Cypher HTTPエンドポイントで多数のアークを追加する
これを達成するための合理的に速い方法は何でしょうか?
新しい「リレーションシップ」(「アーク」の正しいneo4j用語)が同じリレーションシップタイプ(「BAR」)を持つ場合、その数を追加するための単一のパラメータ化されたCypherクエリを作成します。関係。ここ
[
{a:1, b:2, props: {x: 100, y: "abc", z: 500}},
{a:3, b:2, props: {x: 123, y: "bar", z: 99}},
...
]
id
が一意に識別するために使用されるサンプルノードプロパティで対応するクエリである(この例では
、Iはdata
パラメータとして渡された値はこれと同様の集合であるが、と仮定します各関係のエンドノードが作成されます)。
UNWIND {data} AS d
MATCH (a {id: d.a}), (b {id: d.b})
CREATE (a)-[r:BAR]->(b)
SET r = d.props;
注:a
ノードおよび/またはb
ノードが常に同じラベル(複数可)を持っている場合は、(その後、MATCH
句は、ラベルを指定する必要があります。また、対応するインデックス(ES)を作成する必要があります例えば、CREATE INDEX ON :Foo(id)
)。これにより、クエリのパフォーマンスが向上します。