filter - 如何根据属性过滤neo4j中的节点列表
问题描述
我想消除那些不以“媒体主题”开头的路径,名称=“媒体主题”是语言中节点的属性。
这是我的查询
MATCH path = (top:Taxonomy)-[:IS_CHILD_OF*0..]->(taxo)
WHERE NOT ()-[:IS_CHILD_OF]->(top)
WITH DISTINCT [node in nodes(path) | [(language)-[:IN_LANGUAGE{lang:'en'}]->(node) | language][0]] as languages//chn
ORDER BY size(languages) DESC
return [n in reverse(languages) | n.name ] as nodesInPath
这是我的输出
["Media Topic", "crime, law and justice", "judiciary", "court", "trial (court)", "sentencing (criminal)", "capital punishment"]
["Media Topic", "crime, law and justice", "judiciary", "court", "trial (court)", "sentencing (criminal)", "fine (penalty)"]
["Media Topic", "crime, law and justice", "judiciary", "court", "trial (court)", "sentencing (criminal)", "prison"]
["Media Topic", "crime, law and justice", "judiciary", "court", "trial (court)", "sentencing (criminal)", "court-ordered psychiatric treatment"]
["crime, law and justice", "judiciary", "court", "trial (court)", "pre-trial"]
现在不应打印最后一行,因为它不是以“媒体主题”开头
解决方案
MATCH path = (top:Taxonomy)-[:IS_CHILD_OF*0..]->(taxo)
WHERE NOT ()-[:IS_CHILD_OF]->(top)
WITH DISTINCT [node in nodes(path) | [(language)-[:IN_LANGUAGE{lang:'en'}]->(node) | language][0]] as languages
ORDER BY size(languages) DESC
WITH [n in reverse(languages) | n.name ] as nodesInPath
WHERE nodesInPath[0]= "Media Topic"
RETURN nodesInPath
我没有太多改变你的查询,因为我不是你想要在这里实现的目标。但我确实觉得这个查询可以提高性能。我过滤了你得到的最终列表,条件是第零个元素应该是“媒体主题”。如果您可以提供有关图表的更多详细信息。我可能会更有帮助。
推荐阅读
- shell - 在 Linux 的脚本中合并两个 ImageMagick 代码
- c++ - `delete[]` 不是 `new[]` 的对应项吗?
- c++ - 无法在 Debian Linux 中编译 C++17
- c# - “HttpContextAccessor”不包含“Session”的定义
- click - openlayers:鼠标悬停并单击标记自 6.2.0 起不起作用
- xamarin.forms - Xamarin.Forms 图像在 iOS 中不重叠的框架内有负边距
- swift - SWIFTUI 按钮登录验证并转到新视图
- hangouts-chat - 让 [BOT NAME] 没有响应
- c++ - 使用 Visual Studio 的 x86 程序集错误
- keycloak - Keycloak 领域设置不再显示“重复电子邮件”开关