案例:
我有如下所示的节点
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 会返回产品“in”的所有 id。对我来说,所有的关系都如此混乱。此示例是最小的,但实际上每个产品可能最多有 20 个关系。
问题/问题:
我想创建与类别中最低节点的关系。在这种情况下,产品有两个主要类别,因此有两个底部类别。所以我想创建与 id 12 和 5 的关系。
我就是无法理解密码查询。有人可以解释一下吗?
您基本上正在查看以下查询:
匹配其 id 位于给定 id 列表中的类别节点,并且这些节点不应是任何其他类别的父节点
根据您的模型,您正在考虑添加一个谓词,类别节点不具有
INCOMING
类型的
CHILD_OF
关系
WITH [1,5,9,12] AS categoryIds
MATCH (n:Categorie)
WHERE n.id IN categoryIds
AND NOT ()-[:CHILD_OF]->(n)
RETURN n.id