【发布时间】:2021-06-08 10:56:19
【问题描述】:
{
"identity": 7,
"labels": [
"Parent"
],
"properties": {
"name": "foo1"
}
},
{
"identity": 8,
"labels": [
"Child"
],
"properties": {
"name": "bar2"
}
},
{
"identity": 9,
"labels": [
"Child"
],
"properties": {
"name": "bar1"
}
},
{
"identity": 10,
"labels": [
"Parent"
],
"properties": {
"name": "foo2"
}
}
我想用name='abc'
预期行为:我应该得到父母(foo1 和 foo2)作为结果
查询1:
Match (x1:Parent) with x1
optional Match (x1)-[:CHILD]-(x2:Child) with x1 , collect(x2) as x3
UNWIND x3 as x2
WITH x1 , x2 , x3
where none (x IN x3 where x.name IN ['abc'])
return DISTINCT x1
这个查询只返回了 1 个父母(foo1),但它应该返回父母和第二个父母(foo2)没有连接到任何孩子。
PS : 使用 UNWIND 的原因是为了将变量用于变量 x2 上的更多 WHERE 子句。
【问题讨论】:
-
当您读取数据模型时,它会读取 Foo1 is Child of Bar1 而 Bar2 则相反。它应该读作 Foo1 is a PARENT of Children Bar1 和 2。
-
其实我是想暗示 foo1 和 foo2 是父母,而 bar1 和 bar2 实际上是 foo1 的孩子。
-
那么关系名称应该是 (:Parent) - [:HAS_CHILD] -> (:Child)
-
是正确的???? .它应该是 HAS_CHILD