知识库

标记为 密码 的文章

关于 OPTIONAL MATCH 的说明

OPTIONAL MATCH 与 MATCH 一样,将模式与您的图数据库进行匹配。不同之处在于,如果未找到匹配项,OPTIONAL MATCH 将使用空值来…

阅读更多

apoc 4.0 中 apoc.periodic.iterate() 的重大变化

在 3.5 中,实体(节点、关系、路径)可以在一个事务中获取,并可以安全地由另一个事务重用。但是,在 4.0 中,这些实体确实保留了对它们来源的引用…

阅读更多

使用 Cypher 实现最长路径

虽然 Cypher 针对在两个节点之间找到最短路径进行了优化,并且具有 shortestPath() 等功能,但它没有针对最长路径提供类似的功能。在…

阅读更多

一组节点之间所有最短路径

考虑一些任意节点,A、B、C、D、E、F、……​.. 我希望返回这些节点之间的所有最短路径。节点之间可能存在许多边,但预期…

阅读更多

UNION 查询的替代方案

虽然 UNION 在某些情况下很有用,但通常可以通过对查询进行少量更改来完全避免它们。在本文中,我们将介绍各种示例用例,其中…

阅读更多

比较路径中的关系属性

您希望比较路径的关系属性,无论是通过全局值或参数,还是在路径内部相互比较。基本模型:确保有一个约束…

阅读更多

条件 Cypher 执行

在某个时候,您将编写一个需要一些条件逻辑的 Cypher 查询,其中您希望根据情况执行不同的 Cypher 语句。在目前…

阅读更多

在 Cypher 中创建和使用链表

在使用图形时,您可能希望从一些节点创建一个链表。如果要链接的每个节点都具有…

阅读更多

交叉积 Cypher 查询的性能不佳

就像 SQL 一样,如果您没有正确连接查询的各个部分,它将导致交叉(笛卡尔)积,而这通常不是您想要的。例如…

阅读更多

使用 Cypher 如何确定 Neo4j 的版本和版本

如果您想确定正在运行的 Neo4j 实例的版本和版本,可以通过运行以下 Cypher 来实现: 预计输出将是

阅读更多

查询结果中“已使用”消息的说明

通过 Neo4j 浏览器或 cypher-shell 成功执行查询后,您可能会看到一条格式如下面的消息,伴随查询结果: 它提供以下信息: 这些是…

阅读更多

解释调试日志消息“在上次检查点后找到提交”

当运行备份(例如)时,您可能会在该命令输出中观察到类似于以下内容的详细信息,并看到从开始到… 之间存在很长的暂停(即 5 分钟以上)。

阅读更多

解释错误“无法使用空属性值合并节点”

当运行 MERGE(MATCH 和/或 CREATE 的组合)时,如果 MERGE 是…,则可能会遇到“无法使用空属性值合并节点”的错误。

阅读更多

解释错误 LOAD CSV 错误“无法加载外部资源…”

当运行 LOAD CSV Cypher 语句(例如,通过 bin/neo4j-shell 或 http://localhost:7474 处的浏览器)时,这可能会导致以下错误: 并且数据/graph.db/messages.log(2.x)或…

阅读更多

使用计数存储进行快速计数

Neo4j 为保存许多事物的计数元数据维护一个事务性计数存储。计数存储用于告知查询规划器,以便它能够做出明智的…

阅读更多

Neo4j 中的全文本搜索

Neo4j 中的全文本搜索通过全文本模式索引来支持。全文本模式索引以事务方式创建、删除和更新,并在集群中自动复制。例如…

阅读更多

如何使用 Cypher 实现等效于 SQL HAVING 子句的结果

使用传统的基于 SQL 的数据库,HAVING 子句将限制聚合值。例如,将返回所有居民超过 10 万的人口统计区域。要在… 中实现相同的功能。

阅读更多

SQL

如何比较两个图形是否相等

如果您想比较 2 个图形(或子图形)以确定它们是否等效,则以下 Cypher 将生成节点和属性的 md5sum,以使…

阅读更多

如何将表示日期时间戳的属性转换为另一个时区

时间数据类型支持是在 Neo4j 3.4 中引入的,因此可以将带有时区的日期时间戳记录为属性值。以下 Cypher…

阅读更多

如何在十六进制表示法中定义 LOAD CSV FIELDTERMINATOR

使用 LOAD CSV 时,可以定义使用的字段分隔符,默认情况下为 ',' 字符。如果您想覆盖默认值,可以通过… 来实现。

阅读更多

如何在 neo4j-shell 中定义、显示和使用参数

bin/neo4j-shell 允许使用命令行界面通过 Cypher 语句查询您的图形,并将参数包含在这些语句中。使用参数而不是硬编码值将…

阅读更多

如何确定 detach delete 将影响的节点和关系的数量

在运行匹配 …​. detach delete n;(它将找到这些节点并删除与这些节点关联的所有关系,以及删除这些节点本身)之前,…

阅读更多

如何显示所有没有定义标签的节点

虽然为节点分配一个或多个标签提供了许多好处(即索引使用的性能提升、将节点分组为集合等),但可以创建一个…

阅读更多

如何显示具有最多属性的节点

要显示具有最多定义属性的节点,请运行以下 Cypher: 代表性输出类似于: 输出的第一行表示存在一个名为… 的标签。

阅读更多

如何提高计算节点上的关系数量的性能

使用 Cypher,您可以通过以下方式计算关系的数量: 这将报告名为 Sylvester Stallone 的演员的传入/传出关系数量。使用 bin/neo4j-shell 并运行…

阅读更多

如何调用 apoc.cypher.runFile 时传递参数

APOC 允许您拥有一个存储过程 apoc.cypher.runFile,然后将该文件的内容运行到 Cypher 引擎。为了允许在… 中读取该文件。

阅读更多

如何用 Cypher 执行等效于 SQL 的 Create Table as Select 操作

在传统的 SQL RDBMS 中,可以使用 create table as select (即 CTAS) 来创建新表并复制现有数据…

阅读更多

如何通过 cypher-shell 和管道查询文件生成配置文件/解释

如果准备了一个包含 profile 或 explain 子句的 Cypher 语句文件,然后想将该文件管道到 bin/cypher-shell,以生成 profile/explain…

阅读更多

如何生成节点、关系和属性的统计信息清单

使用以下 Cypher 将生成图中节点的“清单”,以及与每个标签的节点数量、属性的平均数量、最小数量相关的统计信息…

阅读更多

如何报告具有多个标签的节点

如果您的数据模型选择在节点上定义多个标签,例如要查找同时定义了 Actor 和 Director 两个标签的所有节点,请使用…

阅读更多

如何在 Cypher 语句中设置断点以进行进一步分析

如果希望在 Cypher 语句中设置“断点”以进行进一步分析(例如,查看获取的锁的数量、内存使用情况),则可以在…

阅读更多

如何使用 LOAD CSV 查看 CSV 文件的列标题

如果有一个 CSV 文件包含以下内容,并且只想运行 LOAD CSV 命令以返回列标题,则以下内容就足够了…

阅读更多

apoc.periodic.iterate 如何与资源一起使用?

apoc.periodic.iterate 如何工作?例如,当运行 call apoc.periodic.iterate("MATCH (n) RETURN n", "DETACH DELETE n", {batchSize:1000}) 时,它是否会将 LIMIT 添加到 MATCH RETURN 中,以便它只…

阅读更多

如何使用连接提示避免代价高昂的遍历

使用 Cypher 匹配模式时,要评估的可能路径数量通常与查询执行时间相关。当路径中存在超级节点(具有…的节点)时

阅读更多

如何在 Cypher 中检查时间范围重叠

Neo4j 3.4 将时间类型引入 Cypher,因此我们现在也有日期、日期时间及其本地版本,以及持续时间。虽然我们没有时间类型…

阅读更多

如何获取图中对象的顶级清单(第 2 部分)

在了解如何获取图中对象的顶级清单的知识库文章之后,本文将介绍如何获取更详细的顶级清单…

阅读更多

如何获取图中对象的顶级清单

以下 Cypher 可用于获取图数据库中对象数量的简单顶级视图。这可以在尝试…

阅读更多

如何为标签实现主键属性

从 Neo4j 2.3.x 开始,可以在标签的属性上创建主键的等效项。例如,以下 Cypher:将创建两个约束…

阅读更多

如何编写 Cypher 查询以返回每个类别的前 N 个结果

以下 Cypher 描述了如何显示整个 :Score 种群中按 field_of_study 属性细分的 5 个最佳测试分数。运行:将返回以下输出:…

阅读更多

限制每行的 MATCH 结果

由于 LIMIT 应用于查询的总行数,因此它不能用于从多个节点进行匹配的情况,在这种情况下,限制必须在匹配…

阅读更多

Neo4j:将字符串转换为日期

Neo4j 3.4 引入了时间日期类型,虽然现在有强大的内置功能,但将字符串转换为日期仍然是一个挑战。如果我们的字符串…

阅读更多

执行匹配交集

匹配交集是一个常见的用例,您需要搜索与一组输入节点的所有节点都有关系的节点。在本文的其余部分,我们将…

阅读更多

对多个节点执行模式否定

某些用例需要匹配与其他一组节点中的任何节点都没有连接的节点。我们将讨论这种查询的错误和正确方法…

阅读更多

UNION 后处理

Cypher 不允许进一步处理 UNION 或 UNION ALL 结果,因为 RETURN 是联合中所有查询的必需项。以下是几种解决方法。Neo4j 中的 UNION 后处理…

阅读更多

重置查询基数

当查询执行时,它们会构建结果行。Cypher 每行执行操作。当查询由完全独立的部分组成,彼此无关,并且您不希望…

阅读更多

了解对零行的聚合

Cypher 中的聚合在某些情况下可能很棘手。特别是,当在 MATCH 之后执行聚合并且没有匹配项,或者在过滤操作之后执行聚合,该操作过滤掉…

阅读更多

通过了解基数来调整 Cypher 查询

基数问题是 Cypher 查询缓慢或不正确的最常见原因。因此,了解基数并使用这种理解来管理基数问题是…

阅读更多

了解 MERGE 的工作原理

什么是 MERGE,它如何工作?MERGE 子句确保图中存在模式。要么整个模式已经存在,要么整个模式需要…

阅读更多

了解 Neo4j 查询计划缓存

本文基于 Neo4j 2.3.2 的行为。查询计划缓存由三个参数控制,如 conf/neo4j.properties 文件中所定义,这些参数在此处详细说明。三个…

阅读更多

了解不存在的属性和使用空值

在 Neo4j 中,由于没有表模式或等效项来限制可能的属性,因此不存在和空值对于节点和关系属性是等效的。也就是说,实际上不存在…

阅读更多

了解查询计划缓存

当第一次提交 Cypher 语句时,Neo4j 会尝试确定该查询是否在计划缓存中,然后再进行计划。默认情况下,Neo4j 会保留 1000 个查询…

阅读更多

更新节点,但返回更新前的状态

某些用例需要更新节点(或关系)属性,但返回更新前的节点(或关系)。您需要获取…的“快照”。

阅读更多

使用 Cypher 生成 Cypher 语句以重新创建索引和约束

以下内容可用于从现有数据库中提取索引定义和约束定义,并将生成的输出回放到另一个 Neo4j 数据库上。例如…

阅读更多

将显式索引用于文本搜索

从 Neo4j 3.4.x 开始,架构索引最适合索引精确属性值,但不支持“模糊”或全文搜索。但是,传统索引允许优化…

阅读更多

使用 max() 和 min() 同时保留项目

max() 和 min() 的聚合函数非常有用,但有时您可能会发现自己与 Cypher 的聚合行为作斗争,这些行为适用于应该很简单的情况。这通常会发生在…

阅读更多

使用子查询控制聚合的范围

聚合,如 collect() 和 count(),在查询计划中显示为 EagerAggregation 运算符(带有深蓝色标题)。它们类似于 Eager 运算符,因为它提供了一个…

阅读更多

为什么我的 WHERE 子句不起作用?

当 WHERE 子句似乎不起作用时,这很令人沮丧。您可以使用以下方法找出问题所在。检查…后面的 WHERE 子句

阅读更多

在 Cypher 中使用条纹

当使用 Cypher 进行数据分析时,您可能遇到需要根据某种条纹识别或过滤数据的问题。例如,对于运动图…

阅读更多