cypher、UNWIND 或 FOREACH 中的循环 (Neo4j)

2024-01-12

我的 neo4j 数据库中有一个关系:

(r:RateableEntity)<-[t:TAG]-(h:HashTags)

现在我想要一个返回包含以下内容的列表的查询:

  1. 的列表hashtagName以及它们在数据库中的频率hashtagCount以及与此主题标签相关的项目列表。hashtagName and hashtagItems have id label.

我收到的号码是hashtag and hashtagItems来自输入参数作为变量。

这是我从密码查询中期望的结果:

"hashtagList": [ 
{
  "hashtagName": "hashtagName1",
  "hashtagCount": number of times hashtag has been used in database,
  "hashtagItems": [ list of relevant items for hashtagName1 ]
},
{
  "hashtagName": "hashtagName2",
  "hashtagCount": number of times hashtag has been used in database,
  "hashtagItems": [ list of relevant items for hashtagName2 ]
},
...
]

我写了这个密码:

MATCH p = (r:RateableEntity)<-[t:TAG]-(h:HashTag)
UNWIND TAIL (NODES(p)) AS hash
WITH COUNT(hash) as Count, h, hash
ORDER BY hash LIMIT 3
WHERE h.tag in hash.tag
MATCH (r:RateableEntity)<-[:TAG]-(h:HashTag)
 RETURN DISTINCT h.tag, r.id, Count
 LIMIT 3

但它返回这个结果:

h.tag       r.id                                  Count
"vanessa"   "cdd14968-404c-41e9-84d5-bf147030a023"  15
"vanessa"   "b7e74f38-44e4-4b7f-b2c4-8301023ffa9b"  15
"vanessa"   "2064d3e4-2995-4202-b178-bb2a6f230ab0"  15

需要记住的一些事情:

  1. 密码运算符对每一行执行。

  2. 尽量不要将 UNWIND 视为循环结构。这一切所做的就是对行上的变量与列表的元素进行笛卡尔积。

因此,当您展开列表时,列表中的每个元素都会有一行,以及该行中已经存在的所有变量。然后,当发生针对每一行执行的后续操作(例如 MATCH 或 WITH)时,因此它看起来像一个循环结构,但实际上不是。

无论如何,这里不需要 UNWIND。对于两节点匹配模式,tail(nodes(p))将只是一个仅包含最后一个节点的单元素列表。它没有改变行数(因为列表大小为 1),并且不会在这里为您提供帮助。

这个查询应该效果更好:

MATCH (h:HashTag)
WITH h LIMIT 3 // best to limit early to avoid doing unnecessary work
WITH h, h.tag as hashtagName, size((h)-[:TAG]->()) as hashtagCount, [(h)-[:TAG]->(r:RateableEntity) | r.id] as hashtagItems
WITH h {hashtagName, hashtagCount, hashtagItems} as entry
RETURN collect(entry) as hashtagList

EDIT

如果您想要按大小排列前 3 个主题标签,则可以使用下面修改后的查询:

MATCH (h:HashTag)
WITH h, size((h)-[:TAG]->()) as hashtagCount
ORDER BY hashtagCount DESC
LIMIT 3
WITH h, hashtagCount, h.tag as hashtagName, [(h)-[:TAG]->(r:RateableEntity) | r.id] as hashtagItems
WITH h {hashtagName, hashtagCount, hashtagItems} as entry
RETURN collect(entry) as hashtagList
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cypher、UNWIND 或 FOREACH 中的循环 (Neo4j) 的相关文章

  • 启用远程访问neo4j 4.2社区版

    由于在家工作 我需要一种方法来监视远程 neo4j 实例 最好通过 Web 浏览器实例 在过去 例如在3 0中 它可以通过以下方式轻松实现修改单个配置行 https neo4j com developer kb how do i enabl
  • 如何转储 neo4j 图形数据库?

    我将所有数据库存储在一个位置C JATIN DATA 数据库 neo4jDatabases 如何使用 neo4j Desktop 单独转储所有数据库 我已经尝试过 neo4j admin dump database to 这个命令但出现错误
  • 如何在 Gremlin 中查找公共顶点数并对结果进行排序?

    我的架构有两种类型的节点 node1 学生 id为主键 节点2 技能 技能名称为主键 他们之间的关系是HAS SKILL 我的用例 对于给定的学生 Id 我需要获取技能最匹配的相似用户 技能计数和常用技能列表 我尝试过的查询 g V has
  • org.neo4j.kernel.GraphDatabaseQueryService 无依赖满足接口

    我只是编写一个简单的程序 将 GTFS 文件上传到 Neo4j Spatial 我相信这是一些配置错误或 Neo4j spatial 库的一些问题 这就是为什么我没有上传我的代码 这是指定的非常基本的代码here https github
  • with 子句做什么?新4j

    I don t understand what WITH clause do in Neo4j I read the The Neo4j Manual v2 2 2 http neo4j com docs stable query with
  • spring-data-neo4j 基本一对多关系不持久

    EDIT 示例项目可在github https github com troig neo4jCustomRepository 我在后端项目中使用 Neo4J Rest 图形数据库 托管在 grapheneDb 中 和 Spring Data
  • Neo4j:基于聚合函数过滤节点

    假设我有一个客户节点列表和每个客户下的订单列表 表示为与这些客户节点关联的订单节点 每个订单都有一个与其关联的成本数字属性 我想返回那些平均订单大于阈值的客户 这是一些无法运行的代码 说明了我想要的内容 MATCH n0 Customer
  • 是否有工具可以将 Neo4j 图转储为 Cypher 并从 Cypher 重新加载它?

    每个熟悉 MySQL 的人都可能使用过 mysqldump 命令 它可以生成代表 MySQL 数据库中的架构和数据的 SQL 语句文件 这些 SQL 文本文件通常用于多种用途 备份 播种副本 在安装之间复制数据库 将产品数据库复制到临时环境
  • neo4j - 三个节点之间的关系

    我完全陌生Neo4j这些天我正在测试它 我遇到的一个问题是如何正确实现涉及 3 个不同节点的关系Spring Data 例如 假设我有 3 NodeEntitys User Tag and TaggableObject 正如你可以争论的那样
  • Cypher Neo4j 无法加载外部资源

    在 Windows 环境中 我尝试加载带有以下语句的 csv 文件 LOAD CSV WITH HEADERS FROM file E Neo4j customers csv AS row 它似乎无法正常工作并返回 无法加载外部资源 文件
  • Neo4J 2.1.3 唯一性约束被违反,这是一个错误吗?

    我们有一个 Neo4J 2 1 3 数据库 并且有一个创建的唯一性约束 如下所示 在 段 SEGMENT 断言上创建约束 segmentId 是唯一的 当我们从浏览器测试这一点时 它可以很好地检测违规行为 例如 CREATE n SEGME
  • 在json文件中导出neo4j数据库

    我想以 JSON 文件导出 Neo4j 图形数据库 This is a Export JSON button in Neo4j web UI version as shown in attached image below 但是 Neo4j
  • 在 Neo4j OGM 1.1.3 ogm 深度为 2 中加载对象非常慢

    使用查询深度 2 时出现超时session load 我正在使用 Neo4j OGM 1 1 3 尝试从 Spring Data Neo4j 3 4 迁移 尝试加载 Node 对象 class Node Long id String nam
  • 如何决定使用哪种NoSQL技术? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 MongoDB 基于文档 HBase 基于列 和 Neo4j 对象图 的优缺点是什么 我特别有兴趣了解
  • Neo4j Desktop DB 无法启动,状态为“KILLED”

    运行 Neo4j Desktop 版本 1 0 15 尝试启动DB导致启动失败 数据库启动失败 DB database f8950fdd 6b5f 4fea 8c9f e8457ee1da9a v3 3 1 退出 状态为 已杀 检查日志 主
  • neo4j合并2个或多个重复节点

    我使用 cypher 手动输入 Neo4j 数据库 因此很容易出现创建重复节点等错误 重复的节点将与其他节点具有各自的关系 是否有内置函数可以合并这些节点 或者我应该手动完成 听起来可能 但密码脚本很复杂 获取每个重复节点的关系 使用正确的
  • neo4j - python 驱动程序,服务不可用

    我对 neo4j 非常陌生 我正在尝试建立从 python3 6 到 neo4j 的连接 我已经安装了驱动程序 并且刚刚开始执行第一步 导入请求 导入操作系统 导入时间 导入urllib 从 neo4j v1 导入 GraphDatabas
  • Neo4j节点创建速度

    我的笔记本电脑上有一个新的 neo4j 设置 通过 REST API 创建新节点似乎相当慢 平均约 30 40 毫秒 我在谷歌上搜索了一下 但找不到任何真正的基准来衡量 应该 花多长时间 有这个帖子 https www arangodb c
  • 如何更改/更新 Neo4j - Cypher 中的标签?

    是否可以使用 Cypher 更改节点上的标签 我有一个带有标签的节点Book 如下所示 我想改变Book标签到DeletedBook u Person r b Book id id1 u Person r b DeletedBook id
  • Neo4j 匹配多个关系

    如何编写一个查询来获取与集合中所有节点都有关系的节点 例如 START n node people username g node groups groupname A groupname B MATCH n M gt g RETURN n

随机推荐

  • 按钮未在 LinearLayout 中显示

    我正在尝试添加一个Button in a LinearLayout之后TextView但它没有出现 这是我的布局代码
  • 强制 IntelliJ 因 NonNull 违规而导致编译失败

    我有下面的简单代码用于测试 IntelliJ 中的 NonNull 注释 然后我去 IntelliJ gt 文件 gt 设置 gt 检查 gt 可能的错误 gt 恒定条件和异常 我设置了严重性 作为错误 这样做 它标记了 print nul
  • 各个方向的实体阴影

    I ve been looking for a way to set the shadow property of a layer like this 其中浅蓝色是图层 UIImageView在本例中 深蓝色是阴影 我想让影子做一些事情 出
  • Android edittext - settext方法光标问题

    我正在尝试在 EditText 中设置文本 但是 setText 完成后 光标仍保留在文本的开头 如何将其移动到文本的末尾 任何在这方面的帮助都是值得赞赏的 此致 罗尼 EditText inputField Editable etext
  • linq to sql 返回布尔值

    我有一张桌子Fruits包含以下列 UserID FruitID 我想验证 UserID 是否在 FruitID 上获得授权 所以我写的是这样的内容 var IsAuthorized from f in MyDC Fruits where
  • 设置位置而不刷新网页

    是否可以在浏览器不刷新页面的情况下更改位置 url 想象一下我希望用户更改某些字段上的某些值 因此 要更新的是 url 问号后面 所以 www mysite com mypage level 1 fav fruit apple fav fo
  • 如何检查 DataReader 值是否不为空?

    我正在编写一个 VB Net 代码 通过 SQL 查询读取 Oracle 表 SQL 查询可能会返回一些空列 我正在尝试检查这些列是否为空 但收到错误Oracle DataAccess dll 中发生 System InvalidCastE
  • 使用锚标记将值传递到另一个 php 页面

    我尝试将 PersonID 的值从 list php 传递到 Delete php 使用锚标记 这是我的代码 a href Delete a 该值已正确传递 但不知怎的 我没有被重定向到Delete php 任何人都可以注意到上面一行中的问
  • “new int;”中的“new”是否被视为运算符?

    表达方式new int 比如在int x new int is a 新的表达方式 https en cppreference com w cpp language new 术语 新运算符 似乎可以与 新表达式 互换使用 例如在这个问题中 新
  • 填充Object[]数据

    我定义了一个变量 Object data 下一步如何用数据填充它 我想做这样的事情 public Object select Object data Here I definded it try stmt conn createStatem
  • JavaScript 函数传递

    我有以下问题 我需要将 hello 函数传递给 name 然后他们调用它 但我收到错误 hello 不是函数
  • Puppeteer 无法在 AWS CodeBuild 上运行 Chrome

    我正在使用 Karma 来测试使用 ChromeHeadless 的 Angular4 项目 并且在本地一切正常 然后我尝试让它在 AWS CodeBuild 上运行 最初的问题是 CodeBuild VM 不包含 chrome headl
  • CBuilder/Delphi 的 HTML 编辑器

    我需要为 C Builder 5 找到基本的所见即所得 HTML 编辑器组件 以便用户创建一些简单的文本 我将其粘贴到现有的 HTML 页面模板中 只是一个简单的支持来创建链接 添加图像 使用标题 粗体 斜体 您可以将 TWebBrowse
  • 为什么我不能为类指定与文件名不同的名称?

    当我想创建一个java类时 它会自动生成一个与类同名的文件 但是当它生成一个类时 它可以更改与类名不同的文件名 我错过了什么吗 source screencast com http content screencast com users
  • Wordpress JsonAPI - 在此服务器上找不到 /wp-json/

    我正在使用以下插件Json 休息 API http wordpress org plugins json rest api 要测试插件文档 https github com WP API WP API blob master docs gu
  • 与“分割”和“场景标记”相比,“语义分割”是什么?

    语义分割只是一种重复 还是 语义分割 和 分割 之间有区别 场景标记 或 场景解析 有区别吗 像素级分割和像素级分割有什么区别 附带问题 当您拥有这种逐像素注释时 您是否可以免费获得对象检测 或者还有什么事情要做吗 请给出您的定义的来源 使
  • 用条件横向求和

    我有一个数据如下所示 ENO A B C D 1001 0 0 1 2 0 1001 1 9 0 0 2 2 1002 0 0 0 0 1002 0 0 6 6 0 1002 0 0 3 0 1003 0 0 0 0 1003 0 0 0
  • 如何在 MySQL 中对非英文字符串进行排序?

    CREATE TABLE IF NOT EXISTS gujarati name varchar 20 CHARACTER SET utf8 COLLATE utf8 unicode ci DEFAULT NULL ENGINE MyISA
  • 我的函数不断返回 None,即使它有 return 语句

    我有一个非常短的函数位于一个不断返回的类中None 尽管我已经将以前的 print 语句变成了 return 语句 但这就是我所拥有的 def explain self return print Wear a self getColor s
  • cypher、UNWIND 或 FOREACH 中的循环 (Neo4j)

    我的 neo4j 数据库中有一个关系 r RateableEntity lt t TAG h HashTags 现在我想要一个返回包含以下内容的列表的查询 的列表hashtagName以及它们在数据库中的频率hashtagCount以及与此