知识库

标记为 cypher 的文章

关于 OPTIONAL MATCH 的注意事项

OPTIONAL MATCH 与 MATCH 一样,用于在图数据库中匹配模式。区别在于,如果未找到匹配项,OPTIONAL MATCH 将使用 null 值表示…

阅读更多

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 来实现:预期的输出将是

阅读更多

查询结果中“consumed after”消息的解释

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

阅读更多

debug.log 中“最后检查点后找到的提交”消息的解释

例如,在运行备份时,您可能会在该命令的输出中观察到类似的详细信息,并看到从开始到结束有很长的暂停(即 5 分钟以上)…

阅读更多

错误“Cannot merge node using null property value for”的解释

在运行 MERGE(MATCH 和/或 CREATE 的组合)时,如果 MERGE 是…,可能会遇到“Cannot merge node using null property value for”的错误。

阅读更多

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

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

阅读更多

使用计数存储实现快速计数

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

阅读更多

Neo4j 中的全文搜索

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

阅读更多

如何使用 Cypher 实现 SQL Having 子句的等效功能

在传统的基于 SQL 的数据库中,HAVING 子句会限制聚合值。例如,它将返回所有居民超过 10 万的邮政编码。要在…

阅读更多

sql

如何比较两个图是否相等

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

阅读更多

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

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

阅读更多

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

使用 LOAD CSV 时,可以定义所使用的字段分隔符,默认是“,”字符。如果要覆盖默认值,可以通过…

阅读更多

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

bin/neo4j-shell 提供了一个命令行界面,允许您通过 Cypher 语句查询图并包含参数。使用参数而不是硬编码值将…

阅读更多

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

在运行 match …​. 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

如果您准备了一个包含 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}) 时,它是否会在 MATCH RETURN 中添加一个 LIMIT,使其只…

阅读更多

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

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

阅读更多

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

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

阅读更多

如何获取图中对象的高级清单(第 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 文件中定义的三个参数控制,这些参数在此处详细说明。这三个…

阅读更多

理解不存在的属性以及如何处理 null 值

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

阅读更多

理解查询计划缓存

当 Cypher 语句首次提交时,Neo4j 将尝试在规划之前确定查询是否在计划缓存中。默认情况下,Neo4j 将保留 1000 个查询…

阅读更多

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

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

阅读更多

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

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

阅读更多

使用显式索引进行文本搜索

截至 Neo4j 3.4.x,模式索引最适合用于精确属性值索引,但不支持“模糊”或全文搜索。然而,旧版索引确实允许优化…

阅读更多

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

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

阅读更多

使用子查询控制聚合范围

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

阅读更多

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

当 WHERE 子句似乎不起作用时,可能会令人沮丧。您可以使用这些方法来找出问题所在。检查 OPTIONAL MATCH 后的 WHERE 子句…

阅读更多

在 Cypher 中处理连续数据

在使用 Cypher 进行数据分析时,您可能会遇到需要根据某种连续数据进行识别或过滤的问题。例如,对于体育图谱…

阅读更多