node.js - 有没有办法区分密码查询返回的某些节点?
问题描述
我使用 Neo4j 图形数据库。我的查询从我知道的起始节点(以某种方式遍历图)中查找节点,作为查询的参数。
我想标记这些起始节点,因为我的查询可以在返回图的另一部分多次返回这些相同的节点。
这是一个假的虚拟查询示例:
MATCH (n0 {name:"john"}), (n1 {name:"doe"})
WITH n0, n1
MATCH p=((P)-[:LINK*1..5]->(n0)-[:LINK]->(n1)->[:LINK*1..5]->(N))
WITH collect(P) + collect(N) + n0 as nodes
RETURN nodes;
我想让 n0 和 n1 有一些特殊的东西,一个新属性,因为结果可以包含具有相同属性/名称的其他节点。
用数组组织结果会很好,如下所示:
[
[P0, P1, P2, P3],
[n0, n1], <--- The 2 starting nodes in the middle !
[N0, N1, N2, N3]
]
是否可以在不更新数据库的情况下从结果中标记部分节点?
解决方案
是的,您可以为这些节点添加标签,例如 :StartNode 或 :Start 或类似的。
实际上,您应该已经在图表中使用标签,通常当我们看到没有标签的查询时这是一个错误,因为这需要扫描所有节点。请根据节点在图表中的一个或多个角色(例如 :Person、:Movie 或类似)标记您的节点,并确保您在查询中也使用了适当的标签。
为了添加索引和约束,还需要标签,这也可能会加快您的查询速度。
节点可以是多标签的,因此此时您可以添加更多特定标签以支持特殊情况,例如您在此处需要的。如果您在这些节点上添加 :StartNode 标签,然后在查询中使用该标签,那么这将在所有 :StartNode 标记节点上使用标签扫描,如果这些是唯一具有此标签的节点,那么您的查找将很快。
推荐阅读
- codeigniter - 用户在注册后没有重定向到页面,但在 codeigniter 中注册成功
- python - python类中“自我”的目的是什么
- c++ - 正确执行while循环直到输入“0”以停止循环?
- html - 为什么我的背景图像仅在添加背景重复时才会拉伸:重复 y?
- sql - 尝试将数据加载到 DataGridView 时出现异常消息
- python - Pandas:合并两个行列大小不等的数据框,并根据下面的说明合并它们
- ios - Safari ajax 请求间歇性空白状态和响应
- python - 为什么我在输出中看到“无”
- javascript - 如何在 Asp.NET 中验证绑定 DropDownList?
- firebase - 更新云 Firestore 中的字段时两个地图之间的差异