1
batch = neo4j.WriteBatch(graph_db)
for n in nodes:
batch.create_indexed_node_or_fail(index, key, value, {node properties})
batch.submit()
你可以很容易地在批量創建索引節點。
但是,如何在批處理中創建節點並同時添加多個鍵:值對?或者將節點添加到多個索引?我想到的
一個想法是先創建節點,然後將它們第二批添加到索引:
3210但這似乎複雜。 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)
現在返回可在該批次中被用來指節點的請求對象。
一個例子是在docs for 1.6.0
感謝Nigel!我會嘗試的。我有點不明白爲什麼我可以用'0'來引用最後一個節點。它會在neo4j中有另一個ID,對吧?如果batch.create()和batch.add_indexed_node()在一個循環中並在創建幾百個節點後提交,這也可以工作嗎?我想我需要看看你的代碼,試着更好地理解這個:) –
零並不是指由服務器創建的節點ID,它指的是該批中的第零個項目,在這種情況下是新的創建節點。 –
這適用於單節點,但如果我在批次中創建更多節點,則不適用。我認爲它不會在迭代時引用批處理中的正確項目。我編輯我的問題與代碼,任何幫助將不勝感激;) –