neo4j:单向/双向关系?

2024-04-07

所以我研究了 neo4j,我可能会在即将到来的项目中使用它,因为它的数据模型可能非常适合我的项目。我查看了文档,但我仍然需要这个问题的答案:

我可以将关系设置为单向吗?

看来 Neo4j 的人很喜欢电影,所以我们继续吧。如果我有这样的图表:

Actor A -> [:Acts in] -> Movie B

那么方向就很明显了,因为节点的类型不同。

但我喜欢恐怖片所以...

Person A -> [:wants_to_kill] -> Person B

我需要这种关系是单向的,所以如果我查询“A 想要杀死谁?”如果我查询“B 想要杀死谁?”,我就会得到 B。我什么也没得到。

有时我仍然需要两个方向的关系

Like:

Person A <-[:has_met] -> Person B

...这是显而易见的。

文档说:

Relationships are equally well traversed in either direction. This means that there is
no need to add duplicate relationships in the opposite direction (with regard to 
traversal or performance).

While relationships always have a direction, you can ignore the direction where it is 
not useful in your application.

所以文档说,关系默认有一个方向,如果我愿意,我可以忽略它。

现在事情变得复杂了:

考虑下图(并注意箭头)

Person A <- [:wants_to_kill] -> Person B
Person B -> [:wants_to_kill] -> Person C
Person C -> [:wants_to_kill] -> Person A

如果我忽略所有人的指示[:wants_to_kill]我得到错误的结果 对于“A / C 想要杀死谁?” 如果我知道必须忽略哪些,我就不会进行查询。

那么我可以以某种方式将关系设置为双向关系(在创建关系时),还是应该用两种关系(人 A 和 B 之间)对此进行建模?


Neo4j 中的关系总是有方向的。如果关系类型的语义不包含方向,例如has_met根据您的示例,最佳实践是在创建关系时应用任意方向。然后通过使用 cypher 中的“双向”(没有“大于/小于”字符)符号来完成查询:

start ... match (a)-[:HAS_MET]-(b) ....

相反,如果关系的语义确实有像你这样的方向wants_to_kill,你需要使用两个关系来表明a和b想要杀死另一个,反之亦然。对于上面的示例,您需要有 4 个关系:

Person A -[:wants_to_kill]-> Person B
Person B -[:wants_to_kill]-> Person A
Person B -[:wants_to_kill]-> Person C
Person C -[:wants_to_kill]-> Person A

要找到 A 想要杀死你的所有人,请执行以下操作:

start a=node:node_auto_index(name='A') match a-[:wants_to_kill]->victims_of_a return victims_of_a

找到所有想要杀死 A 的人:

start a=node:node_auto_index(name='A') match murderer_of_a-[:wants_to_kill]->a return murderer_of_a
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

neo4j:单向/双向关系? 的相关文章

  • Bulbflow:neo4jserver Graph 和 neo4jserver Neo4jclient 之间的区别

    我现在正在尝试学习如何连接到 Neo4j 服务器并使用 Python 中的 Bulbflow 在其上运行 Cypher 查询 我不明白的是连接到 neo4j 服务器的两种可能性之间的区别 1 Graph http bulbflow com
  • Laravel 中的渴望加载约束过滤器问题

    我无法过滤内容groups表关于username in users表使用急切负载约束 http laravel com docs 4 2 eloquent eager loading public function username ret
  • 是否有一个 nosql 存储也允许存储实体之间的关系?

    我正在寻找 nosql 键值存储 它还提供存储 维护存储实体之间的关系 我知道 Google App Engine 的数据存储允许实体之间拥有和不拥有的关系 任何流行的 nosql 商店都提供类似的东西吗 尽管它们中的大多数都是无模式的 但
  • 一起使用 MongoDB 和 Neo4j

    我正在开始一个新项目 我正在考虑使用 MongoDB 作为文档存储工具 使用 Neo4j 作为映射文档之间关系的机制 然后我想通过 REST API 公开查询结果 人们会说这样做的优点和缺点是什么 是否有更好的方法可以使用不同的 NoSQL
  • 将 mongodb 与 neo4j 集成,是否有任何 API 可以链接它们?

    我正在研究推荐引擎 用户数据被收集 他们的友谊 位置 喜欢 教育 并已存储在 mongodb 中 我需要向这些用户推荐相关产品 我计划使用 Neo4j 作为推荐引擎 原因很明显 易于节点之间的遍历 路径信息 问题是我必须首先将 mongod
  • Laravel 在关系模型上按角色名称进行雄辩排序

    我遇到了一个问题 我必须根据模型的关系数据对模型集合进行排序 排序 我已经这样设置了 Models User Team TeamUser Role The TeamUser模型是一个枢轴模型 表 包含user id and team id
  • 如何删除neo4j中的所有索引?

    我想使用 cypher 批量删除所有存在的索引 可以吗 我正在使用 neo4j 3 4 7 DROP INDEX ON Label attributename 如果我在稍后阶段创建相同的索引 它会替换现有索引吗 删除所有索引和约束的快速方法
  • Spring Neo4j:通过不同控制台执行时相同的密码查询花费不同的时间

    通过不同控制台执行相同的密码查询会花费不同的时间 通过执行spring data neo4j 花了 8 秒 Query MATCH user User uid 0 FRIEND friend User RETURN friend publi
  • SQLAlchemy 声明式 + 跨多个不同数据库的关系

    我花了一段时间 但我弄清楚了如何使用 SQLAlchemy 对两种不同类型的数据库之间的关系进行建模 Base declarative base class Survey Base tablename SURVEY survey id Co
  • 使用 scala 检索与给定节点相关的 neo4j 节点

    我有 2 个名为 User node 和 Article node 的节点 它们通过关系相关联 文章节点 gt Written By gt 用户节点 如何获取给定用户节点写入的所有文章节点 我假设您正在使用嵌入式 neo4j 因此有一个类型
  • Cypher - 匹配两个不同的可能路径并返回两者

    我有一个数据集 我在这里作为示例表示 http console neo4j org id 3dq78v http console neo4j org id 3dq78v 我想要做的是对于图表中的每个 Z 节点 该示例只有一个 但我有很多 我
  • 使用cypher删除neo4j中的所有节点和关系超出堆空间

    我一直在尝试按照 neo4j google 组和其他在线来源的建议运行此查询 开始 n 节点 匹配 n r 其中 ID n gt 0 删除n r 为了删除测试之间的所有节点和关系 当我从控制台执行此操作时 我用完了 java 堆空间 当我从
  • 适用于 Web 照片库的正确 NoSQL 数据架构

    我正在寻找为照片库的 NoSQL 存储构建合适的数据结构 在我的网络应用程序中 一张照片可以是一个或多个相册的一部分 我有使用 MySQL 的经验 但几乎没有使用键值存储的经验 使用 MySQL 我将设置 3 个表 如下所示 photos
  • 如何在java中使用cypher加载CSV文件?

    我是密码新手 我想在java中使用cypher加载csv 我用谷歌搜索并找到了以下作品 LOAD CSV WITH HEADERS FROM http neo4j com docs 2 3 1 csv import movies csv A
  • 如何将dbpedia导入neo4j? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要将 dbpedia 导入 neo4j 我从这里下载 dbpedia http wiki dbpedia org Download
  • 在巨大的数据集上创建独特的节点和关系 NEO4J

    我的问题与这个非常相似 如何通过neo4j中导入的csv文件创建独特的节点和关系 https stackoverflow com questions 25090255 how to create unique nodes and relat
  • 计算 HBase 表中列族的记录数

    我正在寻找一个 HBase shell 命令来计算指定列族中的记录数 我知道我可以运行 echo scan table name hbase shell grep column family name wc l 然而 这将比标准计数命令运行
  • 在mongodb中编辑子文档N-N关系

    我有一个应用程序 其中article可以链接到多个平台 文章包含平台列表 平台也包含文章列表 有关更多详细信息 请查看我几个月前提出的 stackoverflow 问题 https stackoverflow com a 40377383
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • 同时运行 Gremlin-Server 和 NEO4J Server

    目前看来我们不能同时运行两者Neo4J服务器 and Gremlin服务器同时 有什么办法可以同时运行两者吗 NEO4J 正在运行 我尝试启动 Gremlin Server 然后出现以下错误 java lang RuntimeExcepti

随机推荐

  • 未找到 Hadoop 命令

    我已经在 Linux 机器上安装并配置了 hadoop 现在我正在尝试运行示例 MR 作业 我已经通过命令 usr local hadoop bin start all sh 启动了 hadoop 输出为 namenode running
  • 如何使用 c# excel interop 读取 excel 自定义文档属性

    我正在尝试检查是否已为 Excel 文件设置自定义文档属性 如果设置了则读取该值 这是我正在使用的代码 但到目前为止还没有运气 它不会进入 foreach 循环并出来 var propval ReadDocumentProperty Tes
  • OpenGL:重复使用具有不同参数的相同纹理

    在我的程序中 我有一个纹理 它在不同情况下使用多次 在每种情况下 我都需要应用一组特定的参数 我想避免创建额外的缓冲区 并在每次需要将其用于其他用途时实质上创建纹理的副本 所以我想知道是否有更好的方法 这是什么采样器对象 http www
  • 对“respond_to”与“respond_to”感到困惑吗?

    我正在通过railstutorial org学习Rails 但我对一些事情感到困惑 在本章 http ruby railstutorial org chapters modeling and viewing users two sec pa
  • 使用 cron 表达式流口水规则?

    我有一个要求 我只想在工作日触发规则 我有一些规则 如烟雾 温度 运动 您能否建议我如何根据我的要求制定规则 请给我一些示例 除了 cron 之外 还有其他更好的方法来根据时间触发规则吗 您可以在工作日或周末解雇规则 我也遇到过同样的要求
  • Internet Explorer 11 自动换行不起作用

    似乎自动换行不再适用于 IE 11 中的 textarea 元素 在 IE 10 及更早版本中 FF Safari 和 Chrome 自动换行按预期工作 IE 11 没有实现任何自动换行 我尝试将 wrap hard 添加到textarea
  • 如何检查节点到其后代叶子的所有路径的黑色高度?

    Given a 红黑树 我需要写一个高效算法检查对于每个节点 从该节点到后代叶子的所有路径是否包含相同数量的黑色节点 即如果属性为 true 或 false 则算法应返回布尔值 它将返回 RB 树的黑色高度 如果高度为0 则该树是无效的红黑
  • UIButton 的自定义字体标题

    有没有办法为按钮标题添加自定义字体 The UIButton类暴露了一个标题标签 http developer apple com library ios documentation UIKit Reference UIButton Cla
  • 计算余弦相似度 Spark Dataframe

    我正在使用 Spark Scala 来计算 Dataframe 行之间的余弦相似度 数据帧格式如下 root SKU double nullable true Features vector nullable true 下面的数据框示例 S
  • 将字符串分配给字符数组

    我对下面的事情感到有点惊讶 示例1 char s 100 abcd declare and initialize WORKS 示例2 char s 100 declare s hello initalize DOESN T WORK lva
  • Apple 应用内购买 StoreKit 错误

    我正在为书架实现应用程序购买功能 但在购买书籍期间随机出现错误消息 错误信息是 付款请求仅限于通过 Store Kit 的 didReceiveResponse 方法返回的有效产品 我在苹果找到了这个文档http developer app
  • 如何在 tsconfig 中使用单个模块的路径?

    这个问题是后续问题如何使用 tsconfig json 中的路径 https stackoverflow com q 43281741 49942但我想为单个模块执行此操作 我有一个模块 它的实施于src functions foo ts
  • 获取字符串及其子字符串的所有组合[重复]

    这个问题在这里已经有答案了 我见过很多关于获取所有可能的子字符串 即相邻的字符集 的问题 但没有看到关于生成所有可能的字符串 包括其子字符串的组合 的问题 例如 让 x abc 我希望输出是这样的 abc ab ac bc a b c 要点
  • 如何使用唯一值更新表中的列,但不是所有行,不递增[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以使用单个 UPDATE SQL 语句执行多个更新 https stackoverflow com questions 412101 is it possible to perform mult
  • 对其中包含数字的 std::string 进行排序?

    我目前正在按 std string 30 Thanks 您可以创建自定义比较函数来使用std sort 该函数必须检查字符串是否以数值开头 如果是 则将每个字符串的数字部分转换为int使用某种机制 如字符串流 然后比较两个整数值 如果值比较
  • 在 Objective-C 中将 NSString 拆分为数组

    我怎样才能分割字符串 Hello 至 一个 C 数组 H e l l o or Objective C 数组 H e l l o 如果您对 C 数组感到满意chars try const char array Hello UTF8Strin
  • 这是什么样的算法?盒装/背包?

    昨晚我正在开发一个应用程序 遇到了一个特定的问题 我确信可能有一个有效的算法来解决它 有人可以建议吗 Problem TL DR 也许一张图片会有所帮助 http www custom foam inserts com http www c
  • 当池中仍有线程运行时,为什么 executor.isShutdown() 返回 true?

    shutdown 的 Java 文档说 shutdown 无效关闭 启动有序关闭 其中执行先前提交的任务 但不会接受新任务 如果已经关闭 则调用不会产生任何附加效果 该方法不等待之前提交的任务完成执行 使用awaitTermination
  • MySQL 在全表字段中添加前缀

    基本上我只是决定将我的主 ID 切换到 源 字段 因为我将从多个源导入内容 现在我想弄清楚事物从何而来 因此我想为其添加一个前缀 例如portalname formerID 我试过了 UPDATE pics SET source nk so
  • neo4j:单向/双向关系?

    所以我研究了 neo4j 我可能会在即将到来的项目中使用它 因为它的数据模型可能非常适合我的项目 我查看了文档 但我仍然需要这个问题的答案 我可以将关系设置为单向吗 看来 Neo4j 的人很喜欢电影 所以我们继续吧 如果我有这样的图表 Ac