我想创建一个生成特定json输出的密码查询。此输出的一部分包括一个对象,该对象具有相对于父节点子节点的动态数量的键:
{
...
"parent_keystring" : {
child_node_one.name : child_node_one.foo
child_node_two.name : child_node_two.foo
child_node_three.name : child_node_three.foo
child_node_four.name : child_node_four.foo
child_node_five.name : child_node_five.foo
}
}
我试图创建一个密码查询,但我不相信我接近实现上述所需的输出:
MATCH (n)-[relone:SPECIFIC_RELATIONSHIP]->(child_node)
WHERE n.id='839930493049039430'
RETURN n.id AS id,
n.name AS name,
labels(n)[0] AS type,
{
COLLECT({
child.name : children.foo
}) AS rel_two_representation
} AS parent_keystring
我曾计划将children.foo计算为父母的每个特定关系/子女的出现次数。有没有办法利用reduce功能?基于分析下面提出的阵列生成报告的位置?即report是一个json对象,其中每个键是一个不同的RELATIONSHIP,属性值是关系源于父节点的次数?
提前感谢您提供的指导。
答案 0 :(得分:1)
我不确定Cypher是否允许您使用变量来确定对象的密钥。使用数组会为你工作吗?
COLLECT([child.name, children.foo]) AS rel_two_representation
答案 1 :(得分:0)
我认为,Neo4j Server API输出本身应该被视为任何数据库输出(如MySQL)。即使可以使用默认功能实现所需的输出 - 这对数据库来说也不是自然的方式。
您可能应该考虑创建自己的server plugin。这允许您实现具有所需输出的任何自定义逻辑。