【发布时间】:2022-01-04 14:43:53
【问题描述】:
我有一个树结构,对我的树的每个节点都有访问权限,我想只在嵌套对象中获取我有权访问的节点,如下所示:
{
name: "project 1",
Children: [
{name: "nested child"}
]
}
这是我的图形结构:
我想获取与Marion 有:VIEWER 关系的所有节点,这是我尝试过的查询,但我没有嵌套结构
MATCH path =(a:Account {firstName: "Marion"})-[:VIEWER]->()
WITH collect(path) AS paths
CALL apoc.convert.toTree(paths)
YIELD value
RETURN value;
我得到了这个结构
{
"firstName": "Marion",
"viewer": [
{
"_type": "Project",
"name": "project 1",
"_id": 1,
"type": "project"
},
{
"_type": "Child",
"name": "nested child",
"_id": 4,
"type": "child"
}
],
"_type": "Account",
"_id": 29,
}
nested child 应该在 project1 中的 children 对象中
父子关系的深度没有限制
有谁知道这是否可行?
如果您对我的图形结构有更好的想法,我愿意进行优化
编辑
感谢您的回答,它有效,但我想添加一些参数
除了:VIEWER,还可以有其他类型的关系 :VIEWER :EDITOR :OWNER
我需要知道Marion 与每个节点的关系
我已经进行了这个查询,但我不明白为什么我的结果被分成表格?
MATCH (c)<-[:IS_PARENT_OF*]-(p)
WHERE (p)<-[:VIEWER | EDITOR]-(a)
// collect the child nodes per project
WITH TYPE(r) as relation, p,collect(distinct c) AS children
// return a map that contains project and children names
RETURN {name: p.name, Children: [c in children | {name: c.name, access:relation}]}
结果
{
"name": "project 1",
"Children": [
{
"access": "EDITOR",
"name": "Experimental design"
}
]
}
{
"name": "project 1",
"Children": [
{
"access": "VIEWER",
"name": "nested child"
}
]
}
预期
{
"name": "project 1",
"Children": [
{
"access": "EDITOR",
"name": "Experimental design"
},
{
"access": "VIEWER",
"name": "nested child"
}
]
}
【问题讨论】:
标签: neo4j