在CosmosDB Graph集合中,我试图找到所有类型为{strong>不且没有“活动”边指向类型为typeA
的节点的类型typeB
的所有节点。 。
某些边缘可能被“软删除”(即g.E().has('softDeleted', true)
)。这些边缘应该被忽略。
这是我尝试过的:
g.V().hasLabel('typeA')
-> returns 10 nodes of type "typeA", as expected
g.V().hasLabel('typeA')
.outE().not(has('softDelete', true))
.inV().hasLabel('typeB')
-> returns 2 nodes of type "typeB", as expected
g.V().hasLabel('typeA')
.where( // same condition as above, inside a 'where' clause
outE().not(has('softDelete', true))
.inV().hasLabel('typeB')
.count().is(eq(0)) // " where there are no such edges"
)
-> returns all 10 nodes of type "typeA" again ?!
在上面的查询中,应用where
子句似乎没有过滤任何内容。
答案 0 :(得分:1)
以下查询将查找所有不具有typeA
顶点边的typeB
顶点。仅考虑没有softDelete
属性的边或将softDelete
设置为false
的边,其他边将被忽略。
g.V().hasLabel('typeA').
not(outE().or(hasNot('softDelete'),
has ('softDelete', false)).
inV().hasLabel('typeB'))