返回多列

Returning multiple columns

大家好,这里是 Neo4J 的所有新手, 我正在尝试在 neo4J broswer 环境中使用以下简单查询 return 键或属性。

MATCH (n:movies),(m:people)
RETURN properties(n,m)

我想要实现的是 return 电影和人物节点的属性 但是,我总是会得到一个错误

Too many parameters for function 'properties' (line 2, column 9 (offset: 36))
" RETURN properties(n,m)"

我试过了,

MATCH (n:movies),(m:people)
RETURN properties(k) in [n,m]

我会得到的错误

Variable `k` not defined (line 2, column 20 (offset: 47))
" RETURN properties(k) in [n,m]"

我正在尝试将此处的列表传递给 k,但 NEO4J 不允许我这样做。甚至可以将列表传递给函数 properties() ??

提前致谢。

properties()只接受一个参数,你可以试试

MATCH (n:movies),(m:people) RETURN properties(n) as prop_n, properties(m) as prop_m 

或更优化的查询是

MATCH (n:movies) optional match (m:people) RETURN properties(n) as prop_n, properties(m) as prop_m 

MATCH (n:movies),(m:people)
RETURN properties(k) in [n,m]

因为你没有定义 k 所以你得到了错误。同样根据 doc properites() 将“returns 关系、节点或映射的表达式”作为参数。不支持您的查询。

properties function只接受一个节点或一个关系作为输入。

MATCH (n:movies),(m:people) RETURN properties(n), properties(m)

将创建一个 Cartesian Product
即如果你有五部电影和十个人,你将得到所有 50 种组合的结果。

如果您不是在寻找笛卡尔积,则必须定义特定模式或进一步限制 MATCH 子句。

如果您只需要单个属性而不需要组合它们,请考虑 Union

MATCH (n:Movie)
RETURN properties(n) as `Properties`
UNION ALL
MATCH (m:Person)
RETURN properties(m) as `Properties`

为什么我要为看似简单的查询使用别名?为避免这种情况:

All sub queries in an UNION must have the same column names (line 3, column 1 (offset: 39))

使用列表: collect function lets you create/construct a list from the results while UNWIND 将列表扩展为一系列行。