当前位置: 首页 > 知识库问答 >
问题:

neo4j-对路径使用Skip和limit并对返回的节点排序

濮阳君浩
2023-03-14

我在我的应用程序中使用了Neo4j(3.5.1)和Spring-data-neo4j(5.0.10.release)。我也在使用OGM。

我的节点之间有以下关系:

我试图写一个密码查询,以获得所有的零件在一辆车。但是,我想对结果进行分页,还想对按创建日期排序的零件进行排序(最近创建的零件首先返回)

MATCH (vehicle: Vehicle{id:{vehicleId}})
WITH vehicle MATCH p=(vehicle)-[:HAS_PART]-(part:Part)
WITH p, part SKIP 1 LIMIT 1 OPTIONAL MATCH m=(part)-[:IS_LINKED_WITH]->(:Part)
RETURN collect(nodes(p)), collect(relationships(p)), collect(nodes(m)), collect(relationships(m))
merge (v:Vehicle{id:'V1'})-[:HAS_PART]->(p:Part{id:'P1'})-[:IS_LINKED_WITH]->(p:Part{id:'P5'})

match (v :Vehicle{id:'V1'})
merge (v)-[:HAS_PART]->(p:Part{id:'P3'})

match (v :Vehicle{id:'V1'})
merge (v)-[:HAS_PART]->(p:Part{id:'P2'})-[:IS_LINKED_WITH]->(p:Part{id:'P6'})

共有1个答案

巢嘉志
2023-03-14

您不需要为此在模式中定义路径。

首先匹配车辆的所有部件(如果已链接HAS_PART关系,请使用:HAS_PART*..):

MATCH (v:Vehicle {id:'V1'})-[:HAS_PART]-(part:Part)

我想不是所有的部件都有IS_Linked_WITH关系,所以对链接的部件使用Optional Match(如果只使用Match,则不会得到链接关系为0的部件)

OPTIONAL MATCH (part)-[:IS_LINKED_WITH]-(linked:Part)

然后收集所有部分并使用unwind,这样它们就在一个变量中

WITH COLLECT(DISTINCT part) + COLLECT(DISTINCT linked) as allParts
UNWIND allParts as part
RETURN DISTINCT part.id 
ORDER BY part.id
SKIP 1 LIMIT 2
MATCH (v:Vehicle {id:'V1'})-[:HAS_PART]-(part:Part)
OPTIONAL MATCH (part)-[:IS_LINKED_WITH]-(linked:Part)
WITH COLLECT(DISTINCT part) + COLLECT(DISTINCT linked) as allParts
UNWIND allParts as part
RETURN DISTINCT part.id 
ORDER BY part.id
SKIP 1 LIMIT 2
 类似资料:
  • 本文向大家介绍Linux 相对路径和绝对路径的使用,包括了Linux 相对路径和绝对路径的使用的使用技巧和注意事项,需要的朋友参考一下 01. 概述 绝对路径和相对路径在shell环境中经常遇到,各有用处。有时候相对路径比较方便,有时候绝对路径比较方便。 02. 绝对路径(Absolute Pathname) 绝对路径必定由**/**开头 绝对路径是为档案/文件的所在位置做指向 在任何时候,都可以

  • 我有一个目录如下所示: 我希望我的文件需要。现在我正在使用,但这不起作用。我做错了什么?我希望避免使用。

  • 本文向大家介绍MongoDB 使用Skip和limit分页,包括了MongoDB 使用Skip和limit分页的使用技巧和注意事项,需要的朋友参考一下 使用Skip和limit可以如下做数据分页: Code:   备注:可用于分页,limit是pageSize,skip是第n-1页*pageSize (n-1表示几  第1,2...页)      skip表示跳过  多少条数据,   聚合管道的优

  • 主要内容:什么是当前工作目录,什么是绝对路径与相对路径,Python处理绝对路径和相对路径在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。 什么是当前工作目录 每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。 注意,虽然文件夹是目录的更新的名称,但当前工作目录(或当前目录)是标准术语,没有当前工作文件夹这种说法。 在 Python 中,利用 os.getcwd() 函数可以取得当前工作路径的字

  • 在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置,例如,在《 Linux文件系统的层次结构》中提到的 /home/cat 就表示的是 cat 文件所存放的位置。只要我们告诉 Linux 系统某个文件存放的准确位置,那么它就可以找到这个文件。 指明一个文件存放的位置,有 2 种方法,分别是使用 绝对路径和 相对路径。 我们知道,Linux 系统中所有的文件(目录)都被组织成以根

  • 我试图使用这个查询返回一个节点对象和一个计算字段。理论上,这应该会返回一个散列,我可以访问每个人,计算并导入velocity模板。