С участием
batch = neo4j.WriteBatch(graph_db)
for n in nodes:
batch.create_indexed_node_or_fail(index, key, value, {node properties})
batch.submit()
вы можете легко создавать индексированные узлы в пакетном режиме.
Но как я могу создать узел в пакете и одновременно добавить несколько пар ключ: значение? Или добавить узел к нескольким индексам?
Одна идея, о которой я подумал, состоит в том, чтобы сначала создать узлы, а затем добавить их к индексам во втором пакете:
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()
Некоторые узлы попадают в мой индекс, но не все. Когда я ищу в индексе ('ключ: значение-из-n"), он возвращает узел, но не правильный. Как я могу получить доступ к «внутреннему» идентификатору узлов, когда я пытаюсь добавить их в индекс?
Я попробовал (в настоящее время тестирую) версию 1.6.0 py2neo, и она работает!
n = batch.create(node)
теперь возвращает объект запроса, который можно использовать в пакете для ссылки на узел.
Пример приведен в документации для версии 1.6.0.