我以这种方式表示文件/文件夹层次结构:
CREATE (u:User{name: 'Sarah'})
CREATE (u)-[:OWNS]->(d:Directory{name: 'Homework'})
CREATE (d)-[:OWNS]->(:Note{name: 'French', content: 'Omelette du fromage'})
CREATE (d)-[:OWNS]->(:Note{name: 'Math', content: '2 + 2 = 4'})
CREATE (d)-[:OWNS]->(da:Directory{name: 'Completed'})
CREATE (da)-[:OWNS]->(:Note{name: 'Science', content: 'Blah blahb lah})
CREATE (u)-[:OWNS]->(dx:Directory{name: 'Hobbies'})
CREATE (dx)-[:OWNS]->(:Note{name: 'Sewing', content: 'Fun!'})
CREATE (dx)-[:OWNS]->(:Note{name: 'Dancing', content: 'Tiring'})
莎拉的文件排列方式如下
Homework/
French.txt
Math.txt
Completed/
Science.txt
Hobbies/
Sewing.txt
Dancing.txt
我的目标是使用官方Neo4J JS库发出一个查询,使我得到一个类似于树的对象
[
{
name: "Homework",
label: "Directory",
children: [
{
name: "French",
label: "Note"
},
{
name: "Math",
label: "Note"
},
{
name: "Completed",
label: "Directory",
children: [
{
name: "Science",
label: "Note"
}
]
}
]
},
{
name: "Hobbies",
label: "Directory",
children: [
{
name: "Sewing",
label: "Note"
},
{
name: "Dancing",
label: "Note"
}
]
}
]
但是我是Neo4J和图形数据库的新手,而且我发现很难甚至在文档中搜索我在说什么。这种查询可能吗?我尝试过
MATCH path = (:User{name: 'Sarah'})-[:OWNS*]->(c) RETURN path
但这似乎返回平面节点数组,而不是树。我应该读什么?