database - 使用 Neo4j 将子树节点收集为单独的列表
问题描述
我正在尝试创建一个密码,它收集子树节点(这些子树节点的类型为 Story)并将它们作为单独的列表返回。每棵树都从一个家庭节点开始,连接到用户节点,然后依次连接到故事节点。
为了澄清,有多个树,我试图收集所有故事节点,结构如下:
{
FamilyOne: Stories:[...],
FamilyTwo: Stories:[...]
}
解决方案
像这样的东西应该工作:
MATCH (f:Family)
CALL {
WITH f
MATCH (f)<-[*]-(s:Story)
RETURN f, collect(DISTINCT s) as Stories
}
RETURN f.name as family, Stories
虽然这让你每行都有一个家庭(我不知道你的财产是什么,所以我猜),以及每个家庭的故事。
如果您想要以姓氏作为键的映射结构,那么您需要 APOC 程序:
MATCH (f:Family)
CALL {
WITH f
MATCH (f)<-[*]-(s:Story)
WITH f, collect(DISTINCT s) as Stories
RETURN [f.name, f {Stories}] as familyInfo
}
WITH collect(familyInfo) as familyData
RETURN apoc.map.fromPairs(familyData) as results
另一种方法是尝试 APOC 路径扩展器来获取故事:
MATCH (f:Family)
CALL {
WITH f
CALL apoc.path.subgraphNodes(f, {labelFilter:'/Story', relationshipFilter:'<'}) YIELD node as s
WITH f, collect(s) as Stories
RETURN [f.name, f {Stories}] as familyInfo
}
WITH collect(familyInfo) as familyData
RETURN apoc.map.fromPairs(familyData) as results
推荐阅读
- vba - 为什么我在这里收到类型不匹配错误?
- r - 在R中将csv转换为netcdf
- java - 如何在范围报告中捕获所有测试用例?
- c# - How to fix stored procedure expects return parameter which was not supplied in C#?
- django - Retrieve Django hidden MultipleChoice form field value
- r - 不同层和几个netcdf文件的平均值与R
- ios - 呈现的 UIViewController 不能呈现 UIAlertController
- java - 测试后运行 Dataprovider
- firebase - Detected an object of type "Timestamp" that doesn't match the expected instance
- android - 使用已编译的 C 文件为 Android 创建一个 nativescript 插件