neo4j - neo4j CYPHER 非对称查询响应
问题描述
我正在使用 neo4j 密码将一些查询传递到我的(相当大的)相关实体数据库中。
特别是,我需要找到 type 的所有节点,annotation
或者physical_entity
通过单个关系连接到 type 的节点annotation
。
我的理解是,对如下所示的无向连接的查询将返回N
所有类型的节点annotation
并physical_entity
连接到另一个类型的节点annotation
。
MATCH (N)-[r]-(M)
WHERE ((N.parse_type='physical_entity' OR N.parse_type='annotation')
AND M.parse_type='annotation')
RETURN COUNT(DISTINCT(N))
> 63311
而如果我要求M
,它只会返回annotation
与其他类型节点链接的类型节点annotation
,这将是前一个查询中节点的子集(即前一个查询的结果减去节点physical_entity
)。
MATCH (N)-[r]-(M)
WHERE ((N.parse_type='physical_entity' OR N.parse_type='annotation')
AND M.parse_type='annotation')
RETURN COUNT(DISTINCT(M))
> 47355
然而,这种情况并非如此。第二个查询中有一些类型annotation
的节点不在第一个查询中:
MATCH (N)-[r]-(M)
WHERE ((N.parse_type='physical_entity' OR N.parse_type='annotation')
AND M.parse_type='annotation')
WITH [N, M] as tl
UNWIND tl as n
RETURN COUNT(DISTINCT(n))
> 633554
为什么?
解决方案
推荐阅读
- node.js - 无法将一些参考资料推送到 git.heroku.com/myproject.git
- c - 有符号整数溢出
- c# - 我的简单 Lockbits Image 类中有一个错误
- git - Git 推送到 Heroku 永远不会从写入和总计对象消息的步骤传递
- angular - NGXS Select Observable上的RxJS超时?
- python - 使用 pybind11 在 C++ 之间传递 Python 大整数(>256 位)
- r - 在R中的模式之间粘贴字符串
- python - 即使尝试除了代码块,错误也会不断出现
- data-structures - 绳索和自平衡二叉树混合?(即具有快速第 n 个元素查找的排序集)
- termux - 不要从 github 打开项目