Case:

我有如下所示的 node Categories,并且我创建了一个从类别到父级的关系.

CREATE(p1:Categorie {
  id: 2,
  parent_id: 1,
  name: "Kids",
  is_active: true ,
  position: 1,
  level: 1,
})
CREATE(c1:Categorie {
  id: 5,
  parent_id: 2,
  name: "Toys",
  is_active: true ,
  position: 1,
  level: 2,
})

//New root category
CREATE(p2:Categorie {
  id: 9,
  parent_id: 1,
  name: "Holiday",
  is_active: true ,
  position: 1,
  level: 1,
})
CREATE(c2:Categorie {
  id: 12,
  parent_id: 9,
  name: "Water",
  is_active: true ,
  position: 1,
  level: 2,
})


CREATE(c1)-[:CHILD_OF]->(p1)
CREATE(c2)-[:CHILD_OF]->(p2)

然后我的产品有categorie_ids个这样的数组:

{
    "sku": "abc",
    "name": "Electric boot",
    "categorie_ids": [ 
        1,
        5,
        9,
        12
    ]
}

API返回产品所在的所有ID.对我来说,所有的关系中都有这么多杂乱的东西.这个示例是最小的,但实际上每个产品最多可以有20个关系.

Question/Problem:

我想创建一个与类别中最低 node (S)的关系.在这种情况下,产品有两个主要类别,因此有两个底部类别.所以我想建立一个与id12和id5的关系.

我就是不能理解密码查询.有没有人能照亮一下这个?

推荐答案

您基本上看到的是以下查询:

匹配其ID位于给定ID列表中的类别 node ,并且这些 node 不应是任何其他类别的父 node

根据您的模型,您正在考虑添加一个谓词,即Categorie node 不具有类型CHILD_OFINCOMING关系

WITH [1,5,9,12] AS categoryIds
MATCH (n:Categorie)
WHERE n.id IN categoryIds
AND NOT ()-[:CHILD_OF]->(n)
RETURN n.id

Go相关问答推荐

向API网关终结点发出POST请求时出现AWS Lambda With Go:";Rune me.InvalidEntrypoint";错误

难以为多个平台添加Go Bazel构建选项

ChromeDriver不存在(高朗selenium)

提供的client_secret与此帐户上任何关联的SetupIntent都不匹配

如何修复proxyconnect tcp:tls:第一条记录看起来不像tls握手

golang testscript .txtar 语法,用于 stderr 或 stdout 中包含的文本

Kafka golang 生产者在错误后更改分区计数

为什么标准库中的 IsSorted 会反向迭代切片?

在 Go 中将元数据从一个 JPEG 复制到另一个

Golang telegram 机器人

Go - 永远停止带有上下文的循环

如何将已知类型转换为指向switch 中类型参数的指针?

在 Golang 中查看目录是否可写的跨平台方式?

如何匹配两次出现的相同但随机字符串之间的字符

如何在测试中使用自定义标志(使用`testify/suite`)

为什么 x/net/html Token().Attr 上的 len 在此处为空切片返回非零值?

从golang中的url加载图像

使用 Go 读取 TOML 文件时结果为空

从另一个没有重复的确定性 int

Golang 'defer' 导致发送(接收)API 响应延迟