と
batch = neo4j.WriteBatch(graph_db)
for n in nodes:
batch.create_indexed_node_or_fail(index, key, value, {node properties})
batch.submit()
インデックス付きノードをバッチで簡単に作成できます。
しかし、バッチでノードを作成し、複数のキーと値のペアを同時に追加するにはどうすればよいでしょうか? または、ノードを複数のインデックスに追加しますか?
私が考えた 1 つのアイデアは、最初にノードを作成し、次にそれらを 2 番目のバッチでインデックスに追加することです。
for n in nodes:
batch.create({node properties})
results = batch.submit()
for r in results:
batch add node to index1
batch add node to index2
batch.submit()
しかし、これは複雑なようです。Py2neo はとても素晴らしいので、もっと簡単な方法があるはずです。
ナイジェルの答えに基づいて、ノードのリストについてこれを試しました:
batch = neo4j.WriteBatch(graph_db)
item_in_batch = 0
for n in list_of_nodes:
batch.create(n) # this works, all nodes are created
batch.add_indexed_node("people", "key", "value from n", item_in_batch)
batch.add_indexed_node("people", "key2", "other value from n", item_in_batch)
i += 1
batch.submit()
一部のノードは最終的にインデックスに登録されますが、すべてではありません。('key:value-from-n") のインデックスを検索すると、ノードが返されますが、正しいノードは返されません。ノードをインデックスに追加しようとしたときに、ノードの「内部」ID にアクセスするにはどうすればよいですか?
py2neo の (現在テスト中の) バージョン 1.6.0 を試してみましたが、動作します!
n = batch.create(node)
ノードを参照するためにバッチ内で使用できる要求オブジェクトを返すようになりました。