node.js - Neo4j 尝试对第一个 MATCH 的结果执行第二个 MATCH 查询
问题描述
在 Neo4j 中,我使用社区检测算法并仅返回属于分配了 id '10' 的社区的节点和关系,如下所示。
MATCH p=(a:Function)-[:BASED_ON]->(b:Requirement)-[:RESULT_OF]->(c:Scenario)
WHERE a.community = 10 AND b.community = 10 AND c.community = 10
RETURN p
我现在想进一步过滤图形数据库的这个子集,并显示属于社区“10”的节点和关系,这些节点和关系的 PageRank 是使用 PageRank 中心性算法确定的,大于指定值,例如 1。
我尝试使用以下方法这样做:
MATCH p=(a:Function)-[:BASED_ON]->(b:Requirement)-[:RESULT_OF]->(c:Scenario)
WHERE a.community = 10 AND b.community = 10 AND c.community = 10 AND c.pagerank >1
RETURN p
但是,这不会返回所需的结果。如果它们与 pagerank 小于 1 的 'Scenario' 节点相关,则排除本身具有大于 1 的 pagerank 类型的 'Function' 和 'Requirement' 类型的节点,因为这些节点不满足 MATCH 子句。
我可以使用什么查询来仅显示属于社区“10”且 pagerank 大于 1 的节点,而与它们所连接的节点的 pagerank 无关。换句话说,我想返回 pagerank 大于 1 的节点,即使它们连接到另一个节点,例如 pagerank 小于 1 的“场景”,如前面的代码示例中所示。
任何帮助将不胜感激。
解决方案
在不了解更多信息的情况下,我建议您创建一个Community
带有 id 的节点并将它们链接到 Function 、 Requirement 和 Scenario 。并从那里开始。遍历会快得多。
match (:Community{Id:10})-[]-(x)
where (x:Function or x:Req or req:Sec) and x.pagerank >...
推荐阅读
- php - PHP 非阻塞 http 请求
- scala - 在 Scala 中,理解的产出是如何工作的?
- macos - 有关更多详细信息,请参阅:'go help gopath'
- swift - 未找到“FBSDKCoreKit/FBSDKAppLink.h”文件
- php - Laravel 将输入作为具有不同键的数组发布未验证
- java - 如何防止单击 NonScrollableViewPager 中的其他选项卡?
- ionic3 - 我在移动应用程序中使用 ionic3 和 angular4,我对 ion-datetime 有疑问,我的要求是仅显示当前日期和未来 15 天
- ios - UICollectionView 拖放移除半透明单元格
- javascript - Redux saga 执行多个 HTTP 请求
- ios - 使用webview制作IOS应用时输入类型错误