在Neo4j中迭代列表

在Neo4j中迭代列表,neo4j,Neo4j,我正在研究Neo4j数据库,我想复制下面提到的场景 我有两个节点:产品和客户。在客户节点中,我存储客户id和产品列表。在产品中,我只存储productid 客户具有值{custId:1,products:[1,2,3,4]} 产品具有值{productid:1}、{productid:2}、{productid:3}、{productid:4} 现在我想做的是, 在图形数据库中添加节点后,我需要将所有这些ID替换为自动生成的ID。类似于set custId=ID(customer)和produc

我正在研究Neo4j数据库,我想复制下面提到的场景

我有两个节点:产品和客户。在客户节点中,我存储客户id和产品列表。在产品中,我只存储productid

客户具有值{custId:1,products:[1,2,3,4]} 产品具有值{productid:1}、{productid:2}、{productid:3}、{productid:4}

现在我想做的是, 在图形数据库中添加节点后,我需要将所有这些ID替换为自动生成的ID。类似于set custId=ID(customer)和productId=ID(product),但我一直在研究如何在customer节点中迭代产品列表,并将产品ID更改为自动生成的ID。
非常感谢您的帮助。

将产品ID存储在用户属性数组中的想法是由数据库自动生成的,这是错误的想法。在所有意义上

图形精神-在节点
Customer
与其对应节点
Product
之间建立关系,然后从
Customer
中删除属性
products
,从
Product
中删除属性
productid

MATCH (Customer:Customer)
  UNWIND Customer.products as prodID
    MATCH (Product:Product {productid: prodID})
    MERGE (Customer)-[r:hasProduct]->(Product)
WITH Customer, count(Product) as mergedProduct
     REMOVE Customer.products
WITH count(Customer) as totalMerged
MATCH (Product:Product)
    REMOVE Product.productid

存储产品ID的想法是由数据库在用户属性数组中自动生成的——这是错误的想法。在所有意义上

图形精神-在节点
Customer
与其对应节点
Product
之间建立关系,然后从
Customer
中删除属性
products
,从
Product
中删除属性
productid

MATCH (Customer:Customer)
  UNWIND Customer.products as prodID
    MATCH (Product:Product {productid: prodID})
    MERGE (Customer)-[r:hasProduct]->(Product)
WITH Customer, count(Product) as mergedProduct
     REMOVE Customer.products
WITH count(Customer) as totalMerged
MATCH (Product:Product)
    REMOVE Product.productid

我不明白你的问题。Neo4j为每个节点分配其唯一的ID,该ID是自动生成的,或者您可以使用apoc.create.uuids(x)它会自动生成新的ID它会分配一个唯一的ID,但我正在执行加载csv以导入我定义关系和节点的数据,但一旦导入数据,我希望将所有用户定义的ID更新为自动生成的ID我不理解您的问题。Neo4j为每个节点分配其唯一的ID,该ID是自动生成的,或者您可以使用apoc.create.uuids(x)它会自动生成新的ID它会分配一个唯一的ID,但我正在执行加载csv以导入我定义关系和节点的数据,但一旦导入数据,我想将所有用户定义的ID更新为自动生成的ID我想将其存储在用户属性数组中,因为我正在使用加载csv加载数据,然后我想更新ID,以便我想使用它我想将它存储在用户属性数组中,因为我正在使用LOAD CSV加载数据,然后我想更新ID,所以我想使用它