Cypher 中类似操作的 Neo4j 关系命名约定

2024-02-18

我知道命名关系缺乏约束,尽管很难获得一个指导方针并在我们可能遇到的所有关系上使用它。

你会选择这样的东西吗:

(u:User)-[:LIKES]->(p:Post)
(u:User)-[:LIKES]->(c:Comment)

然后根据标签进行查询;或者是这样的:

(u:User)-[:LIKES_POST]->(p:Post)
(u:User)-[:LIKES_COMMENT]->(c:Comment)

另一种情况是线程聊天应用程序,其中User可以与多个其他用户启动一个线程,这是我想到的结构:

# the thread
CREATE (ct:ChatThread {created_at: timestamp()})

# the thread starter
(u:User {user: 1})<-[:IN_THREAD {type: 'owner'}]-(ct)

# members of the thread
(u:User {user: 2})<-[:IN_THREAD {type: 'member'}]-(ct)
(u:User {user: 3})<-[:IN_THREAD {type: 'member'}]-(ct)

我将解决您发布的第一个示例:

(u:User)-[:LIKES]->(p:Post)
(u:User)-[:LIKES]->(c:Comment)

vs

(u:User)-[:LIKES_POST]->(p:Post)
(u:User)-[:LIKES_COMMENT]->(c:Comment)

这本质上是细粒度与粗粒度的关系,如图数据库 http://graphdatabases.com/书(第 4 章 -构建图数据库应用程序)。想想你的用途:

  • 如果你总是想查询用户喜欢什么,无论它是Post or Comment, then LIKES效果很好。
  • 如果您想专门搜索某个用户的Posts,或用户的Likes,然后是细粒度关系类型,例如LIKES_POST工作得很好。如果你继续使用更通用的LIKES,您需要注意过滤中的实体类型。并且...如果此列表随着时间的推移而增长,您将需要修改查询以包含新类型(如果此类型列表是无界的,则可能会变得有点麻烦)。
  • 如果您经常混淆它们,您可能需要考虑在这些节点之间同时拥有细粒度和粗粒度的关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cypher 中类似操作的 Neo4j 关系命名约定 的相关文章

  • 如何在neo4j中显示屏幕上的所有节点

    我有近 5000 个节点Recipes和 5 个节点Meal Types在 Neo4j 数据库中 目前他们之间没有任何关系 我正在下面运行 CQL MATCH n RETURN n LIMIT 100000 这运行良好 但它返回与相关的节点
  • 使用 neo4j 建模有序树

    我刚刚开始使用 neo4j 并且了解图形和关系的原理 但是我在想要建模的某些结构方面遇到了一些麻烦 我想在编程语言项目中使用它 并存储已解析源文件的 AST 从那里 我计划向节点添加大量额外的数据和关系 以帮助分析和工具 但基本的 AST
  • 如何禁用 Spring Data Neo4j 的登录

    我从 spring neo4j 收到不需要的查询日志 如下所示 25 08 2018 23 47 07 597 restartedMain INFO o n o d bolt request BoltRequest executeReque
  • 如何使用 spring-data-neo4j 配置 neo4j EmbeddedGraphDatabase (现已弃用)?

    我正在使用 spring data neo4j 3 1 1 Release 和 neo4j 2 1 2 我设法制作了一个运行良好的 spring 配置 但它使用了 org neo4j kernel EmbeddedGraphDatabase
  • 如何从 Neo4j 服务器插件登录?

    我正在尝试调试我正在编写的 Neo4J 服务器插件中的问题 有可以输出的日志吗 在哪里或如何执行此操作并不明显 好问题 我想你可以使用 Java 日志记录吗 这应该被路由到正常的日志系统中
  • org.neo4j.kernel.GraphDatabaseQueryService 无依赖满足接口

    我只是编写一个简单的程序 将 GTFS 文件上传到 Neo4j Spatial 我相信这是一些配置错误或 Neo4j spatial 库的一些问题 这就是为什么我没有上传我的代码 这是指定的非常基本的代码here https github
  • 如何结识有相同兴趣的朋友的朋友?

    交朋友的朋友很容易 我得到了这个 看起来效果很好 g v 1 in FRIEND in FRIEND filter it g v 1 但我想做的只是结交有相同兴趣的朋友的朋友 下面我希望 Joe 被推荐为 Moe 而不是 Noe 因为他们没
  • 使用 cypher 和 apoc 将数百万个节点添加到 neo4j 空间层

    我有一个包含 380 万个节点的数据集 我正在尝试将所有这些加载到 Neo4j 空间中 节点将进入一个简单的点层 因此具有所需的纬度和经度字段 我试过了 MATCH d pointnode WITH collect d as pn CALL
  • 在 Ubuntu 中更改 Neo4j 中的数据存储位置

    我已经成功安装了neo4j 端口号为7474 并且工作正常 我的问题是数据存储在 var lib neo4j 该目录中的该位置很快就会满 我想更改数据存储位置 这怎么可能 我尝试编辑该文件 etc neo4j neo4j server pr
  • SET label : 将标签名称作为参数传递

    我有一个这样的查询 将 data 展开为行 MERGE p Book guid row bookGuid set p name row name p Science 我想传递标签 科学 作为参数 因为该标签对于我在 data 中传递的所有行
  • 无法将 neo4j shell 连接到本地服务器

    我已经通过自制程序安装了 neo4j 2 0 0 并启动了服务器 我可以通过端口 7474 访问 webadmin 控制台 但是当我运行时neo4j shell host localhost port 7474 I get non JRMP
  • Neo4J 2.1.3 唯一性约束被违反,这是一个错误吗?

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

    我正在尝试将地图或 json 对象存储为 Neo4j 中的属性 但它不起作用 这是目前节点属性的限制 您有几种解决方法可供选择 您可以将 json 对象转换为字符串并将其保存为属性 您可以使用APOC程序 https neo4j com l
  • 我能找到neo4j中两个节点之间的所有关系吗?

    我有一组节点 它们通过以下方式相关 A gt B gt C gt D 该关系是与某个 id 属性的 连接 关系 我的问题是 我可以编写一个 cypher 查询 它将显示从起始节点 A 到起始节点 D 的每个关系的所有 id 属性 而不在查询
  • 如何决定使用哪种NoSQL技术? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 MongoDB 基于文档 HBase 基于列 和 Neo4j 对象图 的优缺点是什么 我特别有兴趣了解
  • 构造映射不允许索引集合作为映射键?

    所以我正在尝试写一个答案这个问题 https stackoverflow com questions 29262918 cypher zip collections这对我来说似乎很有趣 什么鬼 我来试试 这是我想出的解决方案 对我来说这似乎
  • 不支持的身份验证令牌,仅当禁用身份验证时才允许 schema='none':{ schema='none' } - Neo4j 身份验证错误

    我正在尝试使用 neo4j spark connector 从 Spark 连接到 Neo4j 当我尝试连接到 Neo4j 时遇到身份验证问题org neo4j driver v1 exceptions AuthenticationExce
  • neo4j cypher更新现有节点或创建新节点

    我有一个包含大约 900 万个节点和 1200 万个关系的图 对于图中的每个节点 每个节点都有一个属性子集 这些属性通过标签形成节点的唯一标识 该图正在通过各种数据源进行更新 这些数据源会增加图中的现有节点 或者在节点不存在时创建新节点 我
  • Neo4j节点创建速度

    我的笔记本电脑上有一个新的 neo4j 设置 通过 REST API 创建新节点似乎相当慢 平均约 30 40 毫秒 我在谷歌上搜索了一下 但找不到任何真正的基准来衡量 应该 花多长时间 有这个帖子 https www arangodb c
  • 使用 Cypher 复制不同类型的关系

    我想将现有关系复制到新节点 所有节点都已存在 我想将所有传入关系复制到第二个节点 给定一个节点D和一个像这样的图表 A r gt B lt s C 我想在单个 Cypher 查询中创建以下内容 A r gt B lt s C A r gt

随机推荐

  • React.js 错误:服务工作人员导航预加载请求在“preloadResponse”解决之前被取消

    我的 React 应用程序 使用 Redux Saga 有问题 我收到控制台错误 The service worker navigation preload request was cancelled before preloadRespo
  • 如何在 Java 中读取格式良好的 XML,但跳过架构?

    我想读取其中包含架构声明的 XML 文件 这就是我想做的一切 阅读它 我不在乎它是否有效 但我希望它结构良好 问题是读取器尝试读取架构文件 但失败了 我什至不想尝试 我已尝试禁用验证 但它仍然坚持尝试读取架构文件 理想情况下 我想使用现有的
  • 测地线球的算法

    我必须用较小的均匀分布的球制作一个球体 我认为最佳方法是构建一个基于三角形的测地球体并使用顶点作为球的中点 但我无法编写生成顶点的算法 用 C 或伪代码回答会更好 测地线球体示例 https i stack imgur com iNQfP
  • 通过比较日期合并数据框,Pandas

    我有两个数据框 我想通过比较不同列上的日期来合并它们 这是列出了工作单位和日期的数据框 累计工作量表示工人之前完成的工作数量 该工作单位的领导者被识别为领导者姓名 Work unit Date leader name Cum work un
  • 如何从图像中读取条形码[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个图书馆 技术或关于如何阅读的建议EAN 13 http en wikipedia org wiki EAN 13图像中的条形
  • 仅当选择某些单选按钮时才进行 jQuery 验证

    我的表单上有这个简单的验证
  • 正则表达式仅匹配字母

    我需要为 RegularExpressionValidator ASP NET Web 控件编写正则表达式 正则表达式应允许所有字母字符 但不允许数字或特殊字符 例如 知道怎么做吗 A Za z 验证长度为 1 或更大且仅包含 ASCII
  • 如何理解 Ruby 中的 nil、empty 和 Blank

    我发现自己反复寻找差异的明确定义nil blank and empty 在 Ruby on Rails 中 这是我最接近的 blank 对象为 false 空或空白字符串 例如 nil and 是空白的 nil 对象是 NilClass 的
  • 利用漏洞从文本中过滤单词

    我有一个过滤器 可以过滤 ass fuck 等坏词 现在我正在尝试处理 f ck sh t 等漏洞 我能做的一件事就是将每个单词与具有此类漏洞的坏单词词典进行匹配 但这是相当静态的 不是一个好方法 我可以做的另一件事是使用编辑距离 编辑距离
  • 将邮件项目标记为已发送(VBA Outlook)

    我在更改邮件的已发送属性时遇到问题 因为该属性是只读的 我需要从 vba 级别更改它 从共享邮箱 使用在线outlook模式 发送邮件后出现该问题 邮件不会转到共享邮箱中的 已发送邮件 文件夹 而是保留在发件箱文件夹中 我已经制作了宏将邮件
  • Material UI:根据班级影响孩子

    我想要实现的目标 我有两节课 root and button 我想影响button上课root状态 例如 hover 我的尝试 我正在尝试显示button on root hover const styles root hover here
  • 如果在特定文件夹中,由 Angular CLI 生成的测试将失败

    我已经使用 Angular CLI v6 1 4 通过运行在我的组件文件夹中生成了一个组件ng g c components foo然后跑了ng test 新组件的测试失败并出现以下错误 async 测试助手需要区域 但无法找到 请确保您的
  • ${_csrf.parameterName} 和 ${_csrf.token} 返回 null

    对我来说 CSRF令牌没有生成 我搜索了很多链接仍然没有找到解决方案 出现此错误 在请求参数 csrf 上发现无效的 CSRF 令牌 null 或标头 X CSRF TOKEN
  • 对 scipy.stats.uniform 中的“a”和“b”属性的混淆

    考虑以下代码 import scipy print scipy version gives 0 19 1 Scipy stats uniform unif scipy stats uniform 1 2 print unif a unif
  • LSH 比 BruteForce 匹配慢

    我需要在两个图像之间进行相似度匹配 为此 我在 C 中使用来自 OpenCV 的 ORB 关键点检测器和 ORB 描述符提取器 我的问题出在匹配上 我决定测试两种类型的匹配 基于FLANN的匹配器使用 LSH 和BF匹配器 根据文档和两种算
  • 从詹金斯以前的构建中提取参数

    我正在开发 Jenkins 版本 2 32 1 管道 我想提取在之前的工作构建中选择的参数 在我们之前的 Jenkins 实例 1 627 中 我们使用jenkins model Jenkins instance getItem job l
  • 在 Python 中与无限循环一起运行服务器

    我有以下代码 usr bin python import StringIO import subprocess import os import time from datetime import datetime from PIL imp
  • 如何使用 Laravel 迁移

    我正在使用 PHP 的 Laravel 框架进行开发 我想使用迁移来创建和操作表 这些是我采取的步骤 我用命令创建迁移php artisan migrate make create users table 它创建一个迁移文件 并在其 up
  • 在同一像素上使用 setPixel() 和 getPixel() 后位图像素值不同

    我正在为一个班级项目开发一个隐写术应用程序 它允许用户在另一个图像中编码秘密消息图像 我用Bitmap getPixel x y 修改像素整数值以包含消息值后检索像素信息 然后我用了Bitmap setPixel x y 将修改后的像素放置
  • Cypher 中类似操作的 Neo4j 关系命名约定

    我知道命名关系缺乏约束 尽管很难获得一个指导方针并在我们可能遇到的所有关系上使用它 你会选择这样的东西吗 u User LIKES gt p Post u User LIKES gt c Comment 然后根据标签进行查询 或者是这样的