Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何避免neo4j循环查询中的循环

如何避免neo4j循环查询中的循环
EN

Stack Overflow用户
提问于 2019-12-17 10:15:39
回答 2查看 63关注 0票数 0

我有一个朋友-朋友数据模型,它根据一个朋友如何定义另一个朋友,在任意两个朋友节点之间有两个关系。例如,用户"A“可以将用户"B”定义为“朋友”,而"B“可以将"A”定义为“伙伴”。问题是,当我试图获得用户"A“的第三级关系时,它返回用户"B",而实际结果应该是"D”。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH(a:Users {first_name : "A"}) -[:BUDDY|FRIEND*3] -> (b)
RETURN a,b

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (a)-[]-(b)-[]-(c)-[]-(d)
WHERE a.first_name="A" 
RETURN a,d

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-17 20:17:55

或者,您可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH p=((a:Users {first_name : "A"})-[:BUDDY|FRIEND*3]->(b))
WITH DISTINCT a, b, nodes(p) as nodes
UNWIND nodes AS node
WITH a, b, nodes, COLLECT(DISTINCT node) as distinct_nodes
WITH a, b WHERE SIZE(nodes)=SIZE(distinct_nodes)
RETURN a, b

或者使用APOC调用会更简单一些:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH p=((a:Users {first_name : "A"})-[:BUDDY|FRIEND*3]->(b))
WITH DISTINCT a, b WHERE SIZE(nodes(p)) = SIZE(apoc.coll.toSet(nodes(p)))
RETURN a, b
票数 1
EN

Stack Overflow用户

发布于 2019-12-17 16:23:21

我建议APOC Path Expander过程使用一种只考虑到节点的单一路径的扩展方法,允许指定最大和最小深度,采用关系筛选器,并设置是否允许多次访问节点。具体地说,apoc.path.expandConfig()过程应该满足您的需要。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (a:Users {first_name: "A"})
CALL apoc.path.expandConfig(a, {relationshipFilter:"BUDDY|FRIEND",minLevel:3,maxLevel:3, bfs:true,uniqueness:"NODE_GLOBAL"}) YIELD path
RETURN a, path

唯一性:“NODE_GLOBAL”参数确保没有节点被访问超过一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59371986

复制
相关文章
python如何使用for循环_Python 中for循环的应用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170074.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
7K0
python中for循环加速_如何提高python 中for循环的效率[通俗易懂]
对于某个城市的出租车数据,一天就有33210000条记录,如何将每辆车的数据单独拎出来放到一个专属的文件中呢?
全栈程序员站长
2022/09/22
3.6K0
python product避免多重循环
通过 from itertools import product 避免多重循环,提高可读性
葫芦
2019/05/14
1.3K0
C++核心准则ES.86:避免在基本for循环的循环体中修改循环控制变量​
ES.86: Avoid modifying loop control variables inside the body of raw for-loops
面向对象思考
2020/06/11
1.8K0
python中如何使用for循环_python循环5次
for循环可以把字符串里面的元素都依次取出来,自动赋值给变量i然后再执行循环体内的代码块
全栈程序员站长
2022/09/22
4.8K0
python中如何使用for循环_python循环5次
ModelBuilder中的For循环和While循环
现在开始讲迭代器,迭代是指以一定的自动化程度多次重复某个过程,通常又称为循环。说的通俗点就是批量循环处理,简称批处理。
陈南GISer
2021/08/18
4.3K0
ModelBuilder中的For循环和While循环
现在开始讲迭代器,迭代是指以一定的自动化程度多次重复某个过程,通常又称为循环。说的通俗点就是批量循环处理,简称批处理。
陈南GISer
2021/08/18
21.5K0
Python中的循环(或循环)导入
本文翻译自:Circular (or cyclic) imports in Python
用户7886150
2020/11/30
3.5K0
PHP中如何跳出for循环
在PHP中,可以使用break关键字来跳出循环。当循环执行到break语句时,循环会被立即终止,程序控制权会跳转到循环外的下一条语句。
很酷的站长
2023/08/17
7250
PHP中如何跳出for循环
java循环语句_Java中的循环语句
while 语句也称为条件判断语句. 循环方式 : 利用一个条件来控制是否要反复执行这个语句.
全栈程序员站长
2022/09/08
4.5K0
MATLAB循环_matlab如何循环计算
1. while循环 在给定条件为真时,重复一个语句或一组语句。它在执行循环体之前测试状态。 语法 MATLAB中while循环的语法是 : while <expression> <statements> end 只要表达式(expression)为true,while循环将重复执行程序语句(statements)。 当结果为非空并且包含所有非零元素(逻辑或实数)时,表达式(expression)为true。 否则,表达式(expression)为false。 栗子: a = 10; % while loop execution while( a < 20 ) fprintf(‘value of a: %d\n’, a); a = a + 1; end 执行上面示例代码,得到以下结果 – value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19 2. for循环 多次执行一系列语句,并缩写管理循环变量的代码。 for循环是一种重复控制结构,可以让您有效地编写一个需要执行特定次数的循环。 语法 MATLAB中for循环的语法是 for index = values <program statements> … End 值(values)具有以下格式 – 值格式 描述 initval:endval index变量从initval到endval每次递增1,并重复程序语句 的执行,直到index大于endval。 initval:step:endval 通过每次迭代值步长(step)增加索引(index)的值,或者 当step为负时递减。 valArray 在每个迭代中从数组valArray的后续列创建列向量索 引。 例如,在第一次迭代中,index = valArray(:,1)。 循环最多执行n次,其中n是由numel(valArray,1,:)给出的valArray的列数。valArray可以是任何MATLAB数据类型,包括字符串,单元格数组或结构体。 前两种挺简单的,所以在此值对于第三种语法进行举例子说明: X=rand(5,1); for i=X i end X=rand(1,5); for i=X i end 运行结果是: i = 0.4898 0.4456 0.6463 0.7094 0.7547 i = 0.2760 i = 0.6797 i = 0.6551 i = 0.1626 i = 0.1190 注意:对于向量建立的是列向量索引!! X=magic(3); X for i=X i end 运行输出
全栈程序员站长
2022/11/10
2.5K0
Java中for循环嵌套以及循环的中断
很多初学者到for循环这里就学不会了,今天,我来讲解一下for循环以及嵌套循环,还有中断。
用户7886150
2020/12/03
6.2K0
python中的for循环对象和循环退出
判断条件,1位true,0是flesh,成立时true,不成立flesh,not取反
py3study
2020/01/07
5.3K0
matlab如何使用循环语句_matlab中循环语句怎么写
clc clear a=1; m=3; for i=1:m %理解此处的m不是向量,是循环时的某一个固定值 b(i)=a*i %得到的b值保留前一个循环中计算的值。是一个随着i变化的向量,loop1时向量中有1个元素;loop2时有2个元素,分别是loop1中值和loop2中的值。这种情况下,不会覆盖loop1中参数。 c=a*i %得到循环某个值的具体值。是一个元素,loop2会覆盖loop1中元素 d(3)=a*i %d(3)表示其中包含3个元素,若不够则用0填。固定为一个有3个元素的向量,元素不够是用0填,会覆盖loop1中元素。 end
全栈程序员站长
2022/09/27
6.2K0
python中如何退出多层循环
 2、使用函数配合return关键字 实现跳出循环(在函数内部只要执行完return语句 则直接退出函数)
py3study
2020/01/20
2.2K0
JavaScript中如何中断forEach循环
arr.forEach(callback[, thisArg]),callback会接收到三个参数:currentValue、index、array
meteoric
2018/11/20
2.7K0
如何在Bash中编写循环?
人们想要学习Unix shell的一个常见原因是释放批处理的功能。如果要对许多文件执行某些操作,一种方法是构造一个遍历这些文件的命令来实现。在编程术语中,这称为执行控制,最常见的示例之一是for循环。
用户6543014
2020/02/21
2.5K0
js 中 forEach 如何跳出循环?
// 1.for方法跳出循环 function getItemByIdFor(arr, id) { var item = null; for (var i = 0; i < arr.length; i++) { console.log("for循环 i", i); if (arr[i].id == id) { item = arr[i]; break; } } return ite
蓓蕾心晴
2022/11/22
8.4K0
JavScript中的循环
循环知识 第一部分: 重复运行的代码就可以使用循环来解决。JavaScript的重复机制为循环(loop) for:适合重复动作已知次数的循环。 while:while循环能重复执行动作,直到特定条件语句为true。 for循坏由4部分组成。 1.初始化(initialization):初始化只在循环开始时发生 2.测试条件(test condition):测试条件检查循环是否要再继续 3.动作(action):循环里的动作就是每一轮循环实际重复执行的代码 4.更新(update):循环里的负责更新每一轮循
八哥
2018/01/18
1.9K0
点击加载更多

相似问题

Neo4j避免循环查询中的循环结果

10

如何在path Neo4j Cypher中避免循环或循环

31

如何避免循环中的查询

12

如何在循环中避免查询

10

Neo4J避免循环图上的重复

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文