仅从 neo4j 数据库中获取值

Fetch only values from neo4j database

我正在尝试从我的 neo4j 数据库中获取一些数据并显示在 reactjs 应用程序中的自动建议列表中。我有以下代码来获取数据。

  let result = null; 
    
    try {
      result = await session.run(
        'MATCH (n:Person) RETURN properties(n)',
        
      )} finally {
      await session.close()
    }
    await driver.close()

这里Person节点有不同的属性,即所有Person节点的属性都不相同。有些有编辑姓名,有些有作者姓名。我想要做的是只获取没有键的值并将它们分配到数组中。这里

'MATCH (n:Person) RETURN properties(n)'

returns

{
  "myName": "myname 1",
  "hisName": "myname 2"
}
{
  "herName": "myname 3",
  "theirName": "myname 4"
}

'MATCH (n:Person) RETURN keys(n)'returns

["myName"]
["hisName"]
["herName"]
["theirName"]

但我只想获取值 [myname 1, myname 2, myname 3, myname 4]

你能告诉我如何只获取值吗? 还有如何将这些值保存在数组中?

这会起作用。

MATCH(n:Person)
RETURN apoc.coll.flatten(COLLECT(EXTRACT(key IN keys(n) | n[key])))

p.s。抱歉,EXTRACT() 已被弃用。下面更好

MATCH(n:Shima)
RETURN apoc.coll.flatten(COLLECT([key IN keys(n) | n[key]]))

这是获取 Person class 中键 myName 的所有值的方法。

  1. 使用 EXISTS

    检查节点是否有此 属性
  2. 使用“COLLECT”将值放入数组中。

     MATCH (n:Person) 
     WHERE EXISTS(n.myName) 
     RETURN collect(distinct n.myName) 
    

示例结果:

[“Zhen”、“Praveena”、“Michael”、“Arya”、“Karin”、“Adam”、“John”、“mary”、“jack”、“david”、“tom”]