遍历对象列表并通过对象 Neo4j 的属性创建节点

Iterate over list of objects and create nodes by properties of objects Neo4j

我有一个对象列表,对象有不同的属性。

array = [{name: 'Armen', age: 26}, {name: 'Alex', profession: 'Scientist'}]

我需要遍历列表并创建具有对象提供的属性的节点。哪种方法最简单、最佳?提前致谢!我尝试对列表键和对象键都使用 unwind

WITH array AS nodes 
UNWIND nodes AS node
UNWIND keys(node) AS prop 
WITH node, prop
MERGE (man: Man {prop:node[prop]}) 
RETURN man

但在这种情况下,我为每个 属性.

得到一个节点

展开 prop 将导致每个 属性 单独的行,这就是它不起作用的原因。您可以像这样将属性保存在一个集合中,

WITH [{name: 'Armen', age: 26}, {name: 'Alex', profession: 'Scientist'}] AS nodes 
UNWIND nodes AS node
WITH node, properties(node) as props
MERGE (man:Man {name: props.name}) ON CREATE SET man += props
RETURN man

(我假设 name 对所有项目都是通用的)

@aldrin and Cobra from Neo4j Community 所示,我可以使用 SET 添加属性。这是我找到的最简单的方法。

WITH [{name: 'Armen', age: 26}, {name: 'Alex', profession: 'Scientist'}] 
AS nodes 
UNWIND nodes AS node
CREATE (man:Man)
SET man += node 
RETURN man

我将 ID 添加到我的节点,这样我就可以通过一个查询来创建和更新节点。

WITH [{id: 0, name: 'Armen', age: 26}, {id: 1, name: 'Alex', profession: 'Scientist'}] AS nodes 
UNWIND nodes AS node
MERGE (man:Man {id: node.id})
SET man += node 
RETURN man