Gremlin 如何排除不包含值的顶点

Gremlin 如何排除不包含值的顶点,gremlin,amazon-neptune,Gremlin,Amazon Neptune,我使用的是AWS Neptune gremlin,我有一个顶点,其属性存储了多个值 具有属性颜色的顶点标签“apple”,例如,创建了具有属性颜色多个值[“红色”、“白色”]的“apple”顶点 g.V().hasLabel('apple')。has('color',TextP.notContaining('wh')) 问题是它仍然返回此顶点,如何排除包含“wh”的V?您可以使用而不是步骤: g.V().hasLabel('apple').not(has('color', containing(

我使用的是AWS Neptune gremlin,我有一个顶点,其属性存储了多个值

具有属性颜色的顶点标签“apple”,例如,创建了具有属性颜色多个值[“红色”、“白色”]的“apple”顶点

g.V().hasLabel('apple')。has('color',TextP.notContaining('wh'))


问题是它仍然返回此顶点,如何排除包含“wh”的V?

您可以使用
而不是
步骤:

g.V().hasLabel('apple').not(has('color', containing('wh')))
仅当所有颜色值不包含“wh”时,查询才会过滤顶点

使用
not
containing
可以筛选一个或多个值是否包含“wh”


示例:

在这种情况下,
not()
遍历步骤起作用时,图形提供程序可能会从更简洁的
notContaining()
谓词返回更优化的结果。@stephenmallette有意义。。如果
不包含
,您将如何解决此问题?对不起,您是对的。我有点误读了这个问题/答案。我想我应该先做一个直接的
notContaining
来确保索引命中,然后再做一个过滤器,该过滤器可能会在内存中以
not()
步骤结束。我想,在这一点上,供应商需要确定您应该做什么。“不”对小精灵来说从来都不好。我想我应该
profile()。不管怎样,你的回答是最直接的,也是最好的开始。在这一点上,我的评论可能只是噪音/@noam621,我还有一个问题,我们是否可以对属性值数组中的相同值应用多个条件?e、 g.如果我想排除项目(以'wh'开头并包含'e',其他项目也不包含'e',例如,['fff'、'whe']应该排除,但['red'、'whfff']、['red'、'whfff']需要包括在内。),为了简单起见,我只想得到数组中第一个值包含“e”@Zhongmin的结果,你可以这样做:。。。但在这一点上,它似乎根本没有优化。也许你应该考虑把颜色分成不同的顶点,并用边缘连接到你的主顶点。