如何使用cypher循环Neo4j中的对象

问题描述

嗨,我正在使用带有neo4j-driver的nodejs,我创建了这样的关系(USER- [来自对象的值]-> SUBREDDIT)

用户名是预定义的,因此这不是问题,但是subreddit名称和关系值位于对象内部。

这个对象真的很大,所以我宁愿使用一些密码魔术来在这个对象上循环并建立关系,糟糕的是我不知道该怎么做。

我还想知道这是否是一个方法,或者只是在JavaScript中循环该对象并进行更多查询是否更有效

我正在尝试进行写查询,对象的名称(如“ 63”)是没有意义的,目标节点的名称位于sub属性中,其余的是关系属性

'62': {
  n: 1,ups: 15.730142943532986,gilded: 0,upVote_ratio: 0.9253025260901756,num_comments: 2.7759075782705267,num_crossposts: 0,score: 15.730142943532986,sub: 'r/aww'
},'63': {
  n: 2,ups: 33.58852601401853,upVote_ratio: 1.2799872062537179,num_comments: 7.8618886115333115,score: 33.58852601401853,sub: 'r/FreeKarma4U'
}

解决方法

我为您提供了一个例子。告诉我是否符合您的目的! :-)

const products = [
  { name: 'apple',price: 30 },{ name: 'orange',price: 40 },{ name: 'lemon',price: 50 },]

const driver = neo4j.driver(uri,neo4j.auth.basic(user,password))

const main = async () => {
  try {
      await driver.verifyConnectivity()
      console.log('Driver created')
  } catch (error) {
      console.log(`connectivity verification failed. ${error}`)
  }

  const session = driver.session()
  try {
      await session.run(`
    UNWIND $products as product
    CREATE (p: Product)
    SET p += product
    RETURN COLLECT(p) as products
    `,{products})

  } catch (error) {
      console.log(`unable to execute query. ${error}`)
  } finally {
      await session.close()
  }

  await driver.close()
}

main()