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,它指的是该批中的第零个项目,在这种情况下是新的创建节点。 –
这适用于单节点,但如果我在批次中创建更多节点,则不适用。我认为它不会在迭代时引用批处理中的正确项目。我编辑我的问题与代码,任何帮助将不胜感激;) –